メールサーバーからメールを抜き出す PHPを使ったメールの取得

メールイメージ@complesso.jp

メールサーバーからメールを抜き出す方法です。案件で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'];

以上、今回はざっくりとした内容です。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください