PHPでメール受信処理(PHPプログラムの自動起動)
お久しぶりです。
この一ヶ月の間に第二子出産してましたw
3560gのでっかい男の子ですー。
第一子よりもでっかくて、よく飲んで、よく寝てくれるので、
いやもう楽ちん楽ちん。。。
やっぱり二人目は楽できますねー。
その分、おにーちゃんが物凄く甘えんぼになっているので、
そっちの方が大変です。。。
さて、本題です。
先月までにcakeとPEARを入れておいたので、
早速プログラミングに入りたいと思います。
作りたいのは、(携帯)メールによるお買い物etcメモです。
全体像としては、
- メール受信
- メールの内容でDB更新
- DBの内容でメール送信
になります。
もちろん、メモの閲覧・更新はwebでも行なえるようにしたいと思っています。
今日は一番最初のメールを受信して分解する部分です。
メールの内容をパイプで渡す部分は、
CPA-LABテクニカルさんのさくらインターネットでリアルタイムメール処理
などを参考にしてください。
#/usr/local/bin/php-cgi-default <?php #-- PEARのmimeデコーダーを読み込む require_once 'Mail/mimeDecode.php'; #-- メールデータの取得 $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']; $FromAddress = addslashes($FromAddress); //エスケープ処理 $FromAddress = str_replace('"','',$FromAddress); #-- 署名つきの場合 preg_match("/<.*>/",$FromAddress,$str); if($str[0]!=""){ $str=substr($str[0],1,strlen($str[0])-2); $FromAddress=$str; } #-- Subject フィールドの取得 $Subject = $mail_data->headers['subject']; $Subject = mb_convert_encoding($Subject,"UTF-8","JIS"); #-- 本文の取得 switch(strtolower($mail_data->ctype_primary)){ case "text": //テキストメール $MailBody = $mail_data->body; $MailBody = mb_convert_encoding($MailBody,"UTF-8","JIS"); break; case "multipart": //マルチパート(添付ファイル(画像前提)付) foreach($mail_data->parts as $part){ switch(strtolower($part->ctype_primary)){ case "text": $MailBody = $part->body; $MailBody = mb_convert_encoding($MailBody,"UTF-8","JIS"); break; case "image": $type = strtolower($part->ctype_secondary); // jpg,gif,png以外の画像形式は受け付けない if($type != "jpeg" and $type != "jpg" and $type != "gif" and $type != "png"){ continue; } // ファイルを保存 $fp = fopen("/tmp/". time() . $type, "w"); $length = strlen($part->body); fwrite($fp,$part->body,$length); fclose($fp); break; } } break; default: $MailBody=""; }
あとで、説明追加します。。。