PHP Script đọc mailbox và lấy địa chỉ email không gửi được

Script này sẽ đọc toàn bộ mailbox và lấy ra từng email, duyệt đọc từng email để lấy header của mỗi email.

Kiểm tra header xem có lỗi gửi hay không với thuộc tính X-Failed-Recipients : nghĩa người nhận fail. Chi tiết script xem phía dưới.

<?php
/* connect to your mailbox */
$hostname = ‘{localhost:143/imap/novalidate-cert}INBOX’;
$username = ‘<your username>’;
$password = ‘<your password>’;

/* try to connect */
$inbox = imap_open($hostname,$username,$password) or die(‘Cannot connect to localhost: ‘ . imap_last_error());

/* grab emails */
$emails = imap_search($inbox,’ALL’);

/* if emails are returned, cycle through each… */
if($emails) {

/* begin output var */
$output = 1;

/* put the newest emails on top */
rsort($emails);

/* for every email… */
foreach($emails as $email_number) {

/* get information specific to this email */
//$overview = imap_fetch_overview($inbox,$email_number,0);
$header = imap_fetchheader($inbox,$email_number,0);
//$message = imap_fetchbody($inbox,$email_number,2);

/* output the email header information
$output.= ‘<div>’;
$output.= ‘<span>’.$overview[0]->subject.'</span> ‘;
$output.= ‘<span>’.$overview[0]->from.'</span>’;
$output.= ‘<span>on ‘.$overview[0]->date.'</span>’;
$output.= ‘</div>’;*/

// Split on \n
$h_array=split(“\n”,$header);

foreach ( $h_array as $h ) {

// Check if row start with a char
if ( preg_match(“/^X-Failed-Recipients/i”, $h )) {

$tmp = split(“:”,$h);
$header_name = $tmp[0];
$header_value = $tmp[1];

echo  $header_value . “,”;
$output++;

}
}
}

}
echo $output;
/* close the connection */
imap_close($inbox);
?>

 

Leave a Reply