Logical Rabbit.

さくらのVPS

PHPによるメール処理(POP3編)

PHPでメールを送受信する処理について調べ始めたので、サンプルコードをGistに投稿しました。まずはPOP3から。

大雑把に以下の処理をしています。基本的に動作検証のためなので、エラーチェックはしないし取ってきたメールへの処理も雑極まりない感じですが。

実行にあたっては ./server_setting.ini を適当に用意してください。パスワードとか書く必要があるので、扱いは慎重に。また、メールサーバーにアクセスするため万が一の場合メールを破壊する可能性もあるかと思います。そのあたりは自己責任でお願いします。

…最大の難点は「取り敢えず最新メールを取ってくる」仕様なので、その時何が届いているか賭けになるということだな…。試験実行したらSPAMを拾ってきたこともあったし(汗)

  1. POP3サーバーにログインする
  2. メールの一覧を取得する
  3. メールの一覧から最後の1件(=最新のメール)を取り出す
  4. 取り出したメールのbodyをMIMEデコードする
  5. (この辺りから雑な実装になる)メールがtext/plainの、ふつーのメールだった場合デコード結果が単品になるので、そのままprint
  6. メールのパートごとにContent-Typeをチェックし、text/plainだったらそのままprint
  7. Content-Typeがtext/plainでないなら、連番を振ってファイル保存(面倒くさいのでファイル名の取得は省略している)

メールのリストを取得したあたりからプログラムの目的によってやることが変わってくると思うので、適宜調整すればいいと思われ。