foldrr's weblog

旧ブログ http://d.hatena.ne.jp/foldrr/

PHP で POP3 接続する

環境

問題

PHPPOP3 サーバへ接続したい。

解決方法

PEAR の Net_POP3 を使うと簡単に POP3 アクセスできる。

PEAR Net_POP3 のインストール

PEAR コマンドで Net_POP3 をインストールする。

# PEAR install Net_POP3

サンプル スクリプト

以下にサンプル スクリプトを記載しておく。
エラー判定処理の方法に注意。
Net_POP3 では成功時に true を返し、失敗時に PEAR_Error オブジェクトを返すメソッドがある。
そのため if(! $ret){ ... } といった判定では期待した動作とならない。

<?php
require_once "Net/POP3.php";

$user = "ユーザー名";
$pass = "パスワード";

mb_language("ja");
mb_internal_encoding("UTF-8");

$pop3 = new Net_POP3();
$r = $pop3->connect("example.com", 110);
if($r !== true){
    echo "NG: net Net_POP3()\n";
    exit(-1);
}

$r = $pop3->login($user, $pass);
if($r !== true){
    echo "NG: login\n";
    exit(-1);
}

$r = $pop3->numMsg();
if($r === false){
    echo "NG: numMsg()\n";
    exit(-1);
}

echo "numMsg = $r\n";
if(0 < $r){
    for($i = 0, $n = $r; $i <$n; $i++){
        $headers = $pop3->getParsedHeaders(1 + $i);
        if(! is_array($headers)){
            echo "NG: getParsedHeaders: $i\n";
            exit(-1);
        }
        
        print_r($headers);
    }
}

$pop3->disconnect();

echo "OK\n";
?>