PHPコーディング

メールボックスのメールを読む

2009年03月01日
PHPからメールボックスへ接続して、ボックス内のメールを取得する方法です。

まずはログインです。

接続
$fp = @fsockopen("メールサーバー", "ポートナンバー");
$line = @fgets($fp, 512);

ユーザー認証
@fputs($fp, "USER "."ユーザーID"."\r\n");
$line = @fgets($fp, 512);
@fputs($fp, "PASS "."パスワード"."\r\n");
$line = @fgets($fp, 512);

うまく接続できれば、最後の$lineに【OK】の文字が含まれています。これでログインした状態です。


ボックス内の情報を取得します。
@fputs($fp, "STAT\r\n");
$line = @fgets($fp, 512);

$lineにはステータス、メール数、サイズが半角スペースで区切られて返されます。
list($stat, $mail_num, $size) = explode(' ', $line);
でそれぞれの値が取り出せます。


各々のメールを取得するには、
for($id=1; $id<=$mail_num; $id++){
  @fputs($fp, "RETR ".$id."\r\n");
  $line = @fgets($fp);
  while(!eregi("^\.\r?\n", $line)){
    $mail.= fgets($fp, 512);
  }
}

$mailにはヘッダもボディも含まれます。


メールをサーバーから削除するには、
@fputs($fp, "DELE "."削除するメールのid"."\r\n");
です。


終了は
@fputs($fp, "QUIT\r\n");
@fclose($fp);
です。