dari88's diary

これから趣味にするプログラミング/PHP/javascript/kohana/CMS/web design/

PHPでメール処理・・・PEAR::Net_POP3を使ってみる

今日もNetBeansにて「PHP逆引きレシピ」のサンプルコードを教材にPHPの勉強を進めています。

今日のお題は第6章6.7「メール処理」です。サンプルコード01.phpでメールの送信、02.phpでメールの受信を勉強します。この例題は事前準備が必要です。

<01.php メール送信の手順>
3月25日の日記に書いたようにMercuryの設定が必要です。
・01.phpと同じフォルダに何か画像ファイルを準備します。
・01.phpのメールアドレスとか画像のファイル名とかを書き換えます。

単にこれだけですけど、mb_sendmail() で外部にメールを送れます。実際にはmb_sendmail() は php.ini の記述に従って localhost の Mercury SMTP サーバにメールを送り、Mercury が外部に転送してくれているようです。

<02.php POP3 サーバからメールを受け取る手順>
・このコードは Net/POP3.php を読み込もうとしますが、xampp/php/PEAR/Net/ には pop3.php が有りませんでした。
・ということで pear.php.net から Net_POP3 をインストールする必要があります。コマンドプロンプトを起動して次のように pear コマンドを実行します。

C:\Users\Admin>pear install Net_POP3
WARNING: channel "pear.php.net" has updated its protocols, use "channel-update pear.php.net" to update
downloading Net_POP3-1.3.8.tgz ...
Starting to download Net_POP3-1.3.8.tgz (9,657 bytes)
.....done: 9,657 bytes
install ok: channel://pear.php.net/Net_POP3-1.3.8

C:\Users\Admin>

・これで xampp/php/PEAR/Net/pop3.php がインストールされました。
・02.php にて、利用している POP3 サーバのアドレスやユーザ名などに書き換えます。
・メールが沢山残っている事を想定して、「# 本文を取得して出力します」以下の4行をコメントアウトします。
・で実行してみましたが、googleでは接続できませんでした。が、別のサイトでは件名のリストを得ることができました。

ウーム、ということは Windows FireWall や自宅内ルータは関係ないようです。googleSSL/TSL 接続で、別のサイトは「接続の保護なし」、「平文のパスワード認証」という辺りにヒントがあるのでしょうか? サンプルコードには通信方式を設定するような所が見当たりませんので、案外正解かもしれません。

メールを受ける方に関しては、本来は Mercury の POP3 サーバーを立ち上げて、ここから受信するのが筋のような気がします。この件については別途検討したいと思います。

 尚、pear コマンドを実行した時にチャンネルをアップデートしろみたいな警告が出たので、言われるままに今アップデートしました。