Я резюмировал, что я нашел в stackoverflow по этой теме.Следующий код - это функция, которая проверяет тему и заголовок, возвращаемые imap_fetchheader или imap_headerinfo.
Если бы только каждый почтовый клиент делал то же самое: - |Обычно они должны отправить пустой обратный путь, который может быть идентифицирован вашим скриптом для фильтрации автоматического ответа.Тем не менее, в моих тестах было показано, что этот заголовок не был отправлен версиями Outlook, которые я использовал.
Строки идентификаторов хранятся в массиве, чтобы их было проще настроить в соответствии с вашими потребностями.
/**
* Function _MailIsAutoSubmitted
* @return true|false
* @category Mail
* @author this->guy
*/
function _MailIsAutoSubmitted($Mailbox,$EmailID){
$Found = false;
//Check Headers
$Header = imap_fetchheader($Mailbox,$EmailID);
$HeaderIdentifiers = array(
'([X-]{0,2})Auto-Response-Suppress:([\s]*)([All|OOF])',
'Auto-Submitted:([\s]*)auto-([replied|notified|generated])',
'X-MS-Exchange-Inbox-Rules-Loop:',
'X-Autorespond',
'([X-]{0,2})Precedence:([\s]*)([auto_reply|bulk|junk])'
);
for($x=0;$x<count($HeaderIdentifiers);$x++){
if(preg_match('/'.$HeaderIdentifiers[$x].'/is',$Header)){
$Found = true;
}
}
//Check Subject
$Subject = trim(imap_headerinfo($Mailbox,$EmailID)->subject);
$SubjectIdentifiers = array(
'Auto:',
'Automatic Reply:',
'Auto Response:'
);
for($x=0;$x<count($SubjectIdentifiers);$x++){
if(preg_match('/^'.$SubjectIdentifiers[$x].'/is',$Subject)){
$Found = true;
}
}
return $Found;
}