メールサーバーからメールを抜き出す方法です。案件でwebメーラー的なものを作ろうと思ったので記事にしました。記事はセキュリティ無視になっているので、そのあたりは気にせずにお願いします。言語はphpです。Net_POP3で外部からメールを取得して、Mail/mimeDecodeで解析して表示するという流れです。
Net/POP3をインストール
Net/POP3とは外部のPOP3サーバーから受信メールを取得するPEARです。phpのimap関数でも取得することができますが、php-imapが必要になるため、今回はPEARのNet/POP3にします。
$ pear install Net_POP3
でインストールすることができます。
Net/POP3の使い方
例として、gmailから取得してみます。
$host = "ssl://pop.gmail.com";
$port = "995";
$username = "メールアドレス";
$password = "パスワード";
$pop = new Net_POP3();
//接続
$pop->connect($host, $port);
$pop->login($username, $password);
「Cannot connect to Gmail: Can’t open mailbox」のようなエラーがでる場合は、gmailの受信トレイに、「ブロックされたログインについてご確認ください」とメールがきます。メール本文にある「安全性の低いアプリへのアクセスを許可」をクリックして、許可します。「安全性の低いアプリへのアクセスが有効になりました」とメールがくれば成功です。
Mail/mimeDecode インストール
mimeDecodeとはMIMEエンコード/デコードを行うためのPEARです。
$ pear install Mail_mimeDecode
でインストールすることができます。
Mail/mimeDecode 使い方
mimeDecodeを使って、php取得したメールをデコードしていきます。
//ライブラリの読み込み
require_once ('Mail/mimeDecode.php');
$params['include_bodies'] = true;
$params['decode_bodies'] = true;
$params['decode_headers'] = true;
$params['input'] = file_get_contents($mail_path);
$structure = Mail_mimeDecode::decode($params);
$from = $structure->headers['from'];
$subject = $structure->headers['subject'];
以上、今回はざっくりとした内容です。