気になった内容を自分メモとして記述。
ある程度まとまったところで、Chips集として意味を持たせられれば幸いです。
まずは色々内容を増やしていきます。
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
現在、実際に作成して学校のサーバで動作確認している
メール受信をキーに起動するphpプログラム
( password などは適時自分の環境に合わせて読み替えて下さい)
1. サーバの設定( /.forward )で、受信メールをphpへ送るように設定
http://chiraura.ria10.com/Entry/38/
2. 1通目の受信メールをDBに登録
3. 2通目の受信で、1通目との時刻の差分を返信内容に記載して返信(秒単位のみ、時間・分切り捨て)
4. DBから登録を削除
5. 2-4. を繰り返す
<?php
require_once ("/home/user/pear/php/Mail/mimeDecode.php");
mb_language("Japanese");
mb_internal_encoding("SHIFT-JIS");
#-- メールデータ取得
$params['include_bodies'] = true;
$params['decode_bodies'] = true;
$params['decode_headers'] = true;
$params['input'] = file_get_contents("php://stdin"); // 標準入力
$params['crlf'] = "\r\n";
$mail_data = Mail_mimeDecode::decode($params);
#-- From フィールドの取得
$FromAddress = $mail_data->headers['from'];
#-- To フィールドの取得
$ToAddress = $mail_data->headers['to'];
#-- Subject フィールドの取得
$Subject = $mail_data->headers['subject'];
$Subject = mb_convert_encoding($Subject,"UTF-8","JIS");
#-- 本文の取得
$MailBody = $mail_data->body;
$MailBody = mb_convert_encoding($MailBody,"UTF-8","JIS");
$c_name = $FromAddress;
$c_from = $FromAddress;
$c_subj = $Subject;
$c_mess = $MailBody;
$c_time = date("Y-m-d H:i:s");
// DB関連の処理
$url = "localhost";
$user = "root";
$pass = "password";
$db = "db_name";
// MySQLへ接続
$link = mysql_connect($url,$user,$pass) or die("MySQLへの接続に失敗しました。");
//DBを選択
$sdb = mysql_select_db($db, $link) or die ("データベースの選択に失敗しました。");
//クエリを送信する
//メールアドレスをキーにselect
$sql = "SELECT c_from, c_time FROM tb_mailtimer WHERE c_from = '$FromAddress'";
$result = mysql_query($sql, $link) or die("クエリの送信に失敗しました。<br />SQL:".$sql);
//結果セットの行数を取得する
$rows = mysql_num_rows($result);
//見つかる→返信アドレスに設定後、削除、見つからない→insert
if ($rows) {
while($row = mysql_fetch_array($result))
{
$db_to = $row["c_from"];
$db_time2 = $row["c_time"];
}
//結果保持用メモリを解放
mysql_free_result($result);
//削除
$sql = "DELETE FROM tb_mailtimer WHERE c_from = '$FromAddress'";
$result = mysql_query($sql, $link) or die("クエリの送信に失敗しました。<br />SQL:".$sql);
//時間の比較
$datetime1 = strtotime($c_time);
$datetime2 = strtotime($db_time2);
$interval1 = ($datetime1 - $datetime2);
$interval2 = date( 's秒', $interval1 );
$message = $interval2;
//メール処理
if (!mb_send_mail($db_to, "自動返信", $message, "hoge@hoge.ne.jp")) {
exit("メールの送信に失敗しました。");
}
//echo("メールを送信しました。");
} else {
$sql = "INSERT INTO `tb_mailtimer` ( `c_iden`, `c_name`, `c_from`, `c_subj`, `c_mess`, `c_time` ) VALUES ( '0000', '$FromAddress', '$FromAddress', '$Subject', '$MailBody', '$c_time' ) ";
$result = mysql_query($sql, $link) or die("クエリの送信に失敗しました。<br />SQL:".$sql);
}
//MySQLへの接続を閉じる
mysql_close($link) or die ("MySQL切断に失敗しました。");
?>
メール受信をキーに起動するphpプログラム
( password などは適時自分の環境に合わせて読み替えて下さい)
1. サーバの設定( /.forward )で、受信メールをphpへ送るように設定
http://chiraura.ria10.com/Entry/38/
2. 1通目の受信メールをDBに登録
3. 2通目の受信で、1通目との時刻の差分を返信内容に記載して返信(秒単位のみ、時間・分切り捨て)
4. DBから登録を削除
5. 2-4. を繰り返す
<?php
require_once ("/home/user/pear/php/Mail/mimeDecode.php");
mb_language("Japanese");
mb_internal_encoding("SHIFT-JIS");
#-- メールデータ取得
$params['include_bodies'] = true;
$params['decode_bodies'] = true;
$params['decode_headers'] = true;
$params['input'] = file_get_contents("php://stdin"); // 標準入力
$params['crlf'] = "\r\n";
$mail_data = Mail_mimeDecode::decode($params);
#-- From フィールドの取得
$FromAddress = $mail_data->headers['from'];
#-- To フィールドの取得
$ToAddress = $mail_data->headers['to'];
#-- Subject フィールドの取得
$Subject = $mail_data->headers['subject'];
$Subject = mb_convert_encoding($Subject,"UTF-8","JIS");
#-- 本文の取得
$MailBody = $mail_data->body;
$MailBody = mb_convert_encoding($MailBody,"UTF-8","JIS");
$c_name = $FromAddress;
$c_from = $FromAddress;
$c_subj = $Subject;
$c_mess = $MailBody;
$c_time = date("Y-m-d H:i:s");
// DB関連の処理
$url = "localhost";
$user = "root";
$pass = "password";
$db = "db_name";
// MySQLへ接続
$link = mysql_connect($url,$user,$pass) or die("MySQLへの接続に失敗しました。");
//DBを選択
$sdb = mysql_select_db($db, $link) or die ("データベースの選択に失敗しました。");
//クエリを送信する
//メールアドレスをキーにselect
$sql = "SELECT c_from, c_time FROM tb_mailtimer WHERE c_from = '$FromAddress'";
$result = mysql_query($sql, $link) or die("クエリの送信に失敗しました。<br />SQL:".$sql);
//結果セットの行数を取得する
$rows = mysql_num_rows($result);
//見つかる→返信アドレスに設定後、削除、見つからない→insert
if ($rows) {
while($row = mysql_fetch_array($result))
{
$db_to = $row["c_from"];
$db_time2 = $row["c_time"];
}
//結果保持用メモリを解放
mysql_free_result($result);
//削除
$sql = "DELETE FROM tb_mailtimer WHERE c_from = '$FromAddress'";
$result = mysql_query($sql, $link) or die("クエリの送信に失敗しました。<br />SQL:".$sql);
//時間の比較
$datetime1 = strtotime($c_time);
$datetime2 = strtotime($db_time2);
$interval1 = ($datetime1 - $datetime2);
$interval2 = date( 's秒', $interval1 );
$message = $interval2;
//メール処理
if (!mb_send_mail($db_to, "自動返信", $message, "hoge@hoge.ne.jp")) {
exit("メールの送信に失敗しました。");
}
//echo("メールを送信しました。");
} else {
$sql = "INSERT INTO `tb_mailtimer` ( `c_iden`, `c_name`, `c_from`, `c_subj`, `c_mess`, `c_time` ) VALUES ( '0000', '$FromAddress', '$FromAddress', '$Subject', '$MailBody', '$c_time' ) ";
$result = mysql_query($sql, $link) or die("クエリの送信に失敗しました。<br />SQL:".$sql);
}
//MySQLへの接続を閉じる
mysql_close($link) or die ("MySQL切断に失敗しました。");
?>
PR
思いつきの更新
忘年会がありまして、お酒を飲んだのですが、
カクテルって数百(あっても千数百)通りくらいあるのかな。
有名どころから順番に登録していって、
メールでカクテル名を送ると、情報を返す。というシステムなら
簡単に構築できないかな。
というわけで忘れないうちにメモ。
忘年会がありまして、お酒を飲んだのですが、
カクテルって数百(あっても千数百)通りくらいあるのかな。
有名どころから順番に登録していって、
メールでカクテル名を送ると、情報を返す。というシステムなら
簡単に構築できないかな。
というわけで忘れないうちにメモ。
PHPとTwitterの連携についてメモ
外部からつぶやいたりするには、
OAuth認証と呼ばれる認証方式が必要とのこと。
携帯向けのサービスである、
メールでTwitter 機能 を使えば、もっと簡単に出来るのでは?
と思って探してみたところ
本機能を使用すると、
Twitter投稿専用のメールアドレスが発行され、
そのアドレス宛てにメールを送ることでつぶやかれるとのこと。
ただし、ドメインで判別しているらしく、
携帯キャリア外のドメインは弾かれてしまう。
(docomo.ne.jp や softbank.ne.jp など)
外部からつぶやいたりするには、
OAuth認証と呼ばれる認証方式が必要とのこと。
携帯向けのサービスである、
メールでTwitter 機能 を使えば、もっと簡単に出来るのでは?
と思って探してみたところ
本機能を使用すると、
Twitter投稿専用のメールアドレスが発行され、
そのアドレス宛てにメールを送ることでつぶやかれるとのこと。
ただし、ドメインで判別しているらしく、
携帯キャリア外のドメインは弾かれてしまう。
(docomo.ne.jp や softbank.ne.jp など)
PHPでのメール関数
例//メール処理 (勿論、変数を引数に出来る。)
mb_language("Japanese");
mb_internal_encoding("EUC-JP");
if (!mb_send_mail(送信先, 件名, 内容, 送信元)) {
exit("メールの送信に失敗しました。");
}
echo("メールを送信しました。");
2種類のmail関数
■1. mail()
デフォルトでは、日本語のメールを送れない。
メールの仕様がマルチバイト文字を許可していないため、
エンコードが必要となる。
■2. mb_send_mail()
言語設定、内部エンコーディングを指定することで、
マルチバイト文字も送れる。
例//mb_系の関数を使う場合は、必ず言語設定を行うようにする。
mb_language("Japanese");
mb_internal_encoding("EUC-JP");
例//メール処理 (勿論、変数を引数に出来る。)
mb_language("Japanese");
mb_internal_encoding("EUC-JP");
if (!mb_send_mail(送信先, 件名, 内容, 送信元)) {
exit("メールの送信に失敗しました。");
}
echo("メールを送信しました。");
2種類のmail関数
■1. mail()
デフォルトでは、日本語のメールを送れない。
メールの仕様がマルチバイト文字を許可していないため、
エンコードが必要となる。
■2. mb_send_mail()
言語設定、内部エンコーディングを指定することで、
マルチバイト文字も送れる。
例//mb_系の関数を使う場合は、必ず言語設定を行うようにする。
mb_language("Japanese");
mb_internal_encoding("EUC-JP");
参考サイト
http://d.hatena.ne.jp/thunderbo1t/20100725/1280048804
http://oshiete.goo.ne.jp/qa/4904846.html?from=recommend
http://oshiete.goo.ne.jp/qa/2393841.html
デフォルトの設定でインストールすると、5.1のはず。
<確認方法>
1. phpinfo() を走らせる。
2. コマンド
$ php -v
PHP 5.1.6 (cli) (built: Mar 31 2010 02:44:37)
Copyright (c) 1997-2006 The PHP Group
Zend Engine v2.1.0, Copyright (c) 1998-2006 Zend Technologies
cat /etc/redhat-release centos のバージョン確認
uname -a の末尾を確認
「x86_64 x86_64 x86_64 GNU/Linux」 or 「i686 i686 i386 GNU/Linux」
<実行>
標準のリポジトリには PHP 5.3 が存在しないようなので、remiというリポジトリを追加。
wget http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm
wget http://rpms.famillecollet.com/enterprise/remi-release-5.rpm
rpm -Uvh remi-release-5*.rpm epel-release-5*.rpm
ここではまった。
centos -version で OSがi386 なのか、x86-64 なのかチェックし忘れ、
i386が正しいのに、x86-64を入れてしまい延々と時間をとられた。
mysql → php じゃないと面倒があるとの記事を見つけたので、
sudo yum --enablerepo=remi install mysql
sudo yum --enablerepo=remi install php
/etc/rc.d/init.d/httpd restart
$ php -v
PHP 5.3.3 (cli) (built: Jul 22 2010 16:41:20)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
自分メモ
バージョンを間違えた際、競合してインストールが上手くいかなかったので、
http://d.hatena.ne.jp/thunderbo1t/20100725/1280048804
http://oshiete.goo.ne.jp/qa/4904846.html?from=recommend
http://oshiete.goo.ne.jp/qa/2393841.html
デフォルトの設定でインストールすると、5.1のはず。
<確認方法>
1. phpinfo() を走らせる。
2. コマンド
$ php -v
PHP 5.1.6 (cli) (built: Mar 31 2010 02:44:37)
Copyright (c) 1997-2006 The PHP Group
Zend Engine v2.1.0, Copyright (c) 1998-2006 Zend Technologies
cat /etc/redhat-release centos のバージョン確認
uname -a の末尾を確認
「x86_64 x86_64 x86_64 GNU/Linux」 or 「i686 i686 i386 GNU/Linux」
<実行>
標準のリポジトリには PHP 5.3 が存在しないようなので、remiというリポジトリを追加。
wget http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm
wget http://rpms.famillecollet.com/enterprise/remi-release-5.rpm
rpm -Uvh remi-release-5*.rpm epel-release-5*.rpm
ここではまった。
centos -version で OSがi386 なのか、x86-64 なのかチェックし忘れ、
i386が正しいのに、x86-64を入れてしまい延々と時間をとられた。
mysql → php じゃないと面倒があるとの記事を見つけたので、
sudo yum --enablerepo=remi install mysql
sudo yum --enablerepo=remi install php
/etc/rc.d/init.d/httpd restart
$ php -v
PHP 5.3.3 (cli) (built: Jul 22 2010 16:41:20)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
自分メモ
バージョンを間違えた際、競合してインストールが上手くいかなかったので、
強制オプションを入れてインストールしたり。
rpm -Uvh --force <package>.rpm
カレンダー
10 | 2024/11 | 12 |
S | M | T | W | T | F | S |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
カテゴリー
フリーエリア
最新コメント
[07/07 Abuperut]
[06/26 Stanleymync]
[06/05 Apukibul]
[06/04 Buy Cigarettes Online]
[05/31 RobertPi]
最新記事
(03/29)
(03/29)
(01/14)
(01/05)
(12/25)
最新トラックバック
プロフィール
HN:
daigumi
性別:
非公開
職業:
会社員(システムエンジニア)
自己紹介:
ブログ内検索
P R
カウンター
アクセス解析
アクセス解析