プログラミングで飯を食え。腕をあげたきゃ備忘録!

PHP、JavaScript、HTML5、CSS3などWEB系言語を中心に基本テク、備忘録をまとめます。Android、Iphoneアプリ開発についても!

受け取ったメールの内容をPHPで取得する方法!

サクウェブTVはコチラ↓↓↓
サクウェブTV

特定のメールアドレス宛にメールを送信して

特定のPHPを実行させるような場合、

送られたメールの内容をPHPから取得して整形して

使用したい場合があるでしょう。

 

※ メール送信で特定のPHPを実行させる方法は

  「qmail メール プログラム 起動」などと検索してください。

 

そのような場合は、標準入力から以下のように情報を取得します。

$stdin = file_get_contents('php://stdin');

するとメールの情報がずらっと$stdinに入りますので、

これをゴリゴリ整形してもいいですが、

PEARのmimeDecode.phpを使用すると楽です。

 

まず、

Mail_mimeDecode

ここからmimeDecode.phpをダウンロードして

適宜require_onceしておきます。

(デフォルトで入ってなければ)

 

そして、たとえば

require_once 'mimeDecode.php';
$stdin = file_get_contents('php://stdin');
$decoder = new Mail_mimeDecode($stdin);
$params = array("include_bodies"=>true);
$structure = $decoder->decode($params);

このようにすると、$structureからメールの情報がわかりやすく取得できます。

 

件名を取得したい場合は、

$subject = mb_convert_encoding(mb_decode_mimeheader($structure->headers["subject"]),mb_internal_encoding(), "auto");

こうです。

本文を取得したい場合は、

$body = $structure->body;

こうです。

送信者の情報は

$subject = mb_convert_encoding(mb_decode_mimeheader($structure->headers["from"]),mb_internal_encoding(), "auto");

こうです。

 

このように、標準入力の情報をもとに

上手に内容を分解してくれますから便利です。

 

その他、文字コードやもろもろの情報も、

$structureに入っていますので、var_dump()して確認の上適宜使用してください。

 

また、decode()に渡すパラメータは、

ここを参考にしてください。