人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPでのメール解析についての質問です。

現在、あるメールアドレスに届いたメールを.forwardでPHPプログラムに渡して処理を行っています。


PHP側では「もしメールに添付画像があればサーバー上にそれを保存する」という処理をさせたいです。

調べてみたところ、PEARのmimeDecode.phpを使ったサンプルソースは結構ありました。
例)http://d.hatena.ne.jp/yespamaster/20090307

ですが諸事情により、実装予定のサーバーではPEARが使えないのです。
そこで、純粋にPHPのみで添付画像を引っぺがして保存する方法が知りたいです。


サンプルソースやチュートリアル的なものをご存知の方、ご教授いただけますと幸いです。

●質問者: firemonkey
●カテゴリ:コンピュータ インターネット
✍キーワード:Pear PHP サンプルソース サーバー チュートリアル
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● yamaneroom
●35ポイント ベストアンサー

メールの添付ファイルをデコードして保存する

http://www110.kir.jp/php/shtml/php00205.shtml

◎質問者からの返答

いろいろアレンジしましたが、上記参考にどうにかなりました!ありがとうございます。


2 ● motokun44
●35ポイント

メールのソースを見ればわかると思いますが、ファイルが添付されたメールはマルチパート構成になっています。

これを見れば説明の必要はないと思いますが、一応記しておきます。

(1)メールソースを「改行文字2個」で「header」と「body」の2つに分割します。

改行文字は「\x0D\x0A」です。

(2)「header」にある「boundary文字列」を取得します。

(3)「boundary文字列」で「body」を各パートに分割します。

第1パートはメール本文です。したがって、パート数は添付ファイル数+1になります。

(4)パートごとに、「改行文字2個」で「file_header」と「file_body」の2つに分割します。

(5)「file_header」から「filename」とファイルの「encoding」形式を取得します。

(6)「filename」に「ISO-2022-JP」が付いている場合は、ファイル名が日本語文字ですから、前の「=?ISO-2022-JP?B?」と後の「?=」を取り除いてから base64デコードします。これはJISコードですからお使いの文字コードに変換します。

(7)「file_body」を「encoding」形式でデコードします。

デコードした「file_body」を「filename」で保存します。

(4)?(7)を添付ファイルの数だけ繰り返します。

◎質問者からの返答

ソースと併せて構成がよく分かりました。ありがとうございます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ