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


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


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

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

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


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

回答の条件
  • 1人2回まで
  • 13歳以上
  • 登録:2010/07/23 20:39:00
  • 終了:2010/07/30 20:40:03

ベストアンサー

id:yamaneroom No.1

yamaneroom回答回数1040ベストアンサー獲得回数612010/07/23 22:03:39

ポイント35pt

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

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

id:firemonkey

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

2010/07/26 19:15:03

その他の回答(1件)

id:yamaneroom No.1

yamaneroom回答回数1040ベストアンサー獲得回数612010/07/23 22:03:39ここでベストアンサー

ポイント35pt

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

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

id:firemonkey

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

2010/07/26 19:15:03
id:motokun44 No.2

motokun44回答回数42ベストアンサー獲得回数62010/07/24 15:35:53

ポイント35pt

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

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

(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)を添付ファイルの数だけ繰り返します。

id:firemonkey

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

2010/07/26 19:21:13

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

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

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

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

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