現在、あるメールアドレスに届いたメールを.forwardでPHPプログラムに渡して処理を行っています。
PHP側では「もしメールに添付画像があればサーバー上にそれを保存する」という処理をさせたいです。
調べてみたところ、PEARのmimeDecode.phpを使ったサンプルソースは結構ありました。
例)http://d.hatena.ne.jp/yespamaster/20090307
ですが諸事情により、実装予定のサーバーではPEARが使えないのです。
そこで、純粋にPHPのみで添付画像を引っぺがして保存する方法が知りたいです。
サンプルソースやチュートリアル的なものをご存知の方、ご教授いただけますと幸いです。
いろいろアレンジしましたが、上記参考にどうにかなりました!ありがとうございます。
メールのソースを見ればわかると思いますが、ファイルが添付されたメールはマルチパート構成になっています。
これを見れば説明の必要はないと思いますが、一応記しておきます。
(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)を添付ファイルの数だけ繰り返します。
ソースと併せて構成がよく分かりました。ありがとうございます。
いろいろアレンジしましたが、上記参考にどうにかなりました!ありがとうございます。