PHPコーディング
不達メールの取り出し
2009年03月02日
送ったメールアドレスが無効な場合、エラーメールが返ってきます。
PHPからエラーメールをメールボックスから取り出します。
メールボックスにあるメールの全てのヘッダとボディを見ていると、不達で返ってきたリターンメールにはどうやら、
Final-Recipient: rfc822; メールアドレス
Action: failed
が含まれているようです。
不達メールを調べるには、【Final-Recipient】と【Action: failed】を探し、メールアドレスを抽出するのがよさそうです。
はじめはボディに含まれている【User Unknown】と【Host Unknown】を調べていたのですが、Yahoo!メールはアカウントがないという意味のエラーメールを返しているようなのです。Yahoo!メールからのリターンメールには【User Unknown】も【Host Unknown】も含まれていません。
他に共通するものがないかと調べてみると、全てに共通するのが、
Final-Recipient: rfc822; メールアドレス
Action: failed
のようなのです。
エラーナンバーからの調査も考えたのですが、他のものもひっかかりそうなので、断念しました。
メールボックスのメールを読むの各々のメールを取得の部分を少し書き換えればエラーメールのみ抽出できます。
for($id=1; $id<=$mail_num; $id++){
@fputs($fp, "RETR ".$id."
");
$line = @fgets($fp);
while(!eregi("^.
? ", $line)){
$mail = fgets($fp, 512);
}
}
$mailの中に【stristr】関数を使って【Final-Recipient】と【Action: failed】が含まれるかチェックすればわかります。
PHPからエラーメールをメールボックスから取り出します。
メールボックスにあるメールの全てのヘッダとボディを見ていると、不達で返ってきたリターンメールにはどうやら、
Final-Recipient: rfc822; メールアドレス
Action: failed
が含まれているようです。
不達メールを調べるには、【Final-Recipient】と【Action: failed】を探し、メールアドレスを抽出するのがよさそうです。
はじめはボディに含まれている【User Unknown】と【Host Unknown】を調べていたのですが、Yahoo!メールはアカウントがないという意味のエラーメールを返しているようなのです。Yahoo!メールからのリターンメールには【User Unknown】も【Host Unknown】も含まれていません。
他に共通するものがないかと調べてみると、全てに共通するのが、
Final-Recipient: rfc822; メールアドレス
Action: failed
のようなのです。
エラーナンバーからの調査も考えたのですが、他のものもひっかかりそうなので、断念しました。
メールボックスのメールを読むの各々のメールを取得の部分を少し書き換えればエラーメールのみ抽出できます。
for($id=1; $id<=$mail_num; $id++){
@fputs($fp, "RETR ".$id."
");
$line = @fgets($fp);
while(!eregi("^.
? ", $line)){
$mail = fgets($fp, 512);
}
}
$mailの中に【stristr】関数を使って【Final-Recipient】と【Action: failed】が含まれるかチェックすればわかります。
コメント