受信メールをPHPで内容を取得する

「空メール登録」の技術は送信されたメールの中から送信者(From)を抜き出し、それをデータベースに格納するのだが、その送信者の抜き出しをPHPで実装する方法を紹介する。

まずメールを受信した際にどのようにPHPを呼び出すかだが、これはメール転送で利用される".forward"ファイルに設置したPHPファイルのパスを記載することで実行される。
->空メールを送信してPHPを動作させる設定 -.forward


呼び出されたPHPは下記の一文で受信したメールのヘッダーからボディ部分まで全てを取得できる。


$source = file_get_contents("php://stdin");



次に取得したデータを分割するのだが、これはPHPのMailモジュールにある"mimeDecode"を利用する。
PEARの一部なのでPHPインストール時にデフォルトインストールされることが多いが、もし入っていなければ別途インストールするか、ソース配布されているのでそれを読み込む(require_once)することで利用できる。

今回はメールの送信者を取得するので、下記のように書けば取得できる。


$params['decode_headers'] = true;
$params['crlf'] = "\r\n";
$decoder = new Mail_mimeDecode($source);
$structure = $decoder->decode($params);
$from = mb_convert_encoding(mb_decode_mimeheader($structure->headers['from']), mb_internal_encoding(), "auto");



"Mail_mimeDecode"関数を使えば非常に簡単に取得できるのがわかる。

後は取得したFromをデータベースに格納したり、メール送信のスクリプトを書けば返答メールを出すこともできる。

もちろんFrom以外にも本文や添付ファイルも取得でき、メール送信でブログやサイトの更新を行うといった機能はこれの技術を応用されている。


携帯のメールは何とか利用できるが、パソコンに不慣れで携帯のブラウザを開いて文字を打ち込むのにも抵抗がある人にはこういった技術で更新したり、ツィッターのようにつぶやきに使うことができる。

ブログ気持玉

クリックして気持ちを伝えよう!

ログインしてクリックすれば、自分のブログへのリンクが付きます。

→ログインへ

なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

気持玉数 : 0

この記事へのコメント

この記事へのトラックバック