PHPを使って、受信したメールを自動でDBに格納したいと考えています。

(PHPスクリプトにメールデータを渡す部分とデータをDBに格納する部分は問題ありません。)

stdinから取得したメールデータから、送信元・件名・本文を取得(デコード)する方法を教えていただけないでしょうか。

PEARの「mimeDecode.php」を使用するサンプルはたくさん見つかったのですが、PEARを使えないので、他の方法で各情報を取得したいのですが、なるべく簡単な方法を教えて下さい。よろしくお願いします。

回答の条件
  • 1人2回まで
  • 13歳以上
  • 登録:2010/06/11 22:12:48
  • 終了:2010/06/13 13:31:56

ベストアンサー

id:koriki-kozou No.1

koriki-kozou回答回数480ベストアンサー獲得回数792010/06/12 00:50:24

ポイント60pt

偽者騒ぎで覇気も時間もなくコードまでは書きませんが、回答もきてないようなので、ざっくりと作業順序と要点だけ書きました

(0)stdinからメールデータ取得

(1)ヘッダと本文の分離

最初にでてくる空白行(¥n¥n)の箇所で分離

(2)ヘッダ情報取得

次の構造になっている行から情報を取得(正規表現で抜き出すといいでしょう)

構造 補足
送信元 From:ユーザー名<メールアドレス> ユーザー名の部分はBASE64でエンコードされている
件名 Subject:件名 件名の部分は  〃
メール本文の形式 Content-Type: タイプ; charset="文字コード" タイプおよび関係するRFCの番号は欄外のURL先参照

タイプの一覧: http://www.atmarkit.co.jp/fnetwork/rensai/netpro03/content-type....

(3-1)添付ファイル無しの場合のメール本文

ヘッダで指定された形式で保存されているので、そのまま保存

(3-2)添付ファイル有りの場合

ヘッダで本文の形式に multipart/mixed boundary="------------数字の列" が指定されている場合は

boundaryでコンテンツ毎に分離して、それぞれの先頭に書かれているContent-Type:に応じて適宜対応する

(*)mimeDecode.php から学ぶ

FromやSubjectをキーワードに内部で何をやっているのかを学ぶと作業が楽になるとは思う

id:dy7

詳しい説明をありがとうございます。

上記を参考に、試してみます。

2010/06/12 01:42:12

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません