メール一斉配信をしたときに届かなかったエラーメールだけを
受信できないかと思い作ってみました。
PEARのNet_POP3を使うとメールサーバーに
簡単にアクセスできるのでまずはそちらでメールの一覧を受信。
配信されなかったメールヘッダーの[X-Failed-Recipients]には
メールアドレスが入っているのでそれを取り出す。
後は日付順に並べれば配信エラーの一覧表ができる。
deleteMsg()メソッドを使うとメールの削除もできるので
古いメールはこれで自動的に削除していくといいかもしれない。
説明だけだと簡単なのだが、なかなかうまくいかずこれは意外と難問だった。
参考にしたサイトはこちら
PEAR::Net_POP3を使ってPOP3サーバにアクセスしよう - PHP TIPS:ITpro
<?php
require_once('Net/POP3.php');
$account = array(
'host' => 'ホスト名',
'port' => '110',
'username' => 'ユーザ名',
'password' => 'パスワード',
);
$pop3 =& new Net_POP3();
$pop3->connect($account['host'], $account['port']);
$pop3->login($account['username'], $account['password']);
$mail_list = $pop3->getListing();
$i = 0;
foreach($mail_list as $key => $val) {
$header_list = $pop3->getParsedHeaders($val["msg_id"]);
$errdate = $header_list["Date"];
$errmail = $header_list["X-Failed-Recipients"];
if($errmail != "") {
$errdata[$i]["errdate"] = $errdate;
$errdata[$i]["errmail"] = $errmail;
$i ++;
}//end if
}//end foreach
$pop3->disconnect();
$smarty->assign("errdata", $errdata);
$smarty->display("index.html");
?>
受信できないかと思い作ってみました。
PEARのNet_POP3を使うとメールサーバーに
簡単にアクセスできるのでまずはそちらでメールの一覧を受信。
配信されなかったメールヘッダーの[X-Failed-Recipients]には
メールアドレスが入っているのでそれを取り出す。
後は日付順に並べれば配信エラーの一覧表ができる。
deleteMsg()メソッドを使うとメールの削除もできるので
古いメールはこれで自動的に削除していくといいかもしれない。
説明だけだと簡単なのだが、なかなかうまくいかずこれは意外と難問だった。
参考にしたサイトはこちら
PEAR::Net_POP3を使ってPOP3サーバにアクセスしよう - PHP TIPS:ITpro
<?php
require_once('Net/POP3.php');
$account = array(
'host' => 'ホスト名',
'port' => '110',
'username' => 'ユーザ名',
'password' => 'パスワード',
);
$pop3 =& new Net_POP3();
$pop3->connect($account['host'], $account['port']);
$pop3->login($account['username'], $account['password']);
$mail_list = $pop3->getListing();
$i = 0;
foreach($mail_list as $key => $val) {
$header_list = $pop3->getParsedHeaders($val["msg_id"]);
$errdate = $header_list["Date"];
$errmail = $header_list["X-Failed-Recipients"];
if($errmail != "") {
$errdata[$i]["errdate"] = $errdate;
$errdata[$i]["errmail"] = $errmail;
$i ++;
}//end if
}//end foreach
$pop3->disconnect();
$smarty->assign("errdata", $errdata);
$smarty->display("index.html");
?>

