Существует как минимум три уровня проверок, которые поддерживает SwiftMailer, которые будут сообщать о нескольких типах сбоев доставки.
1) Всегда проверяйте код возврата из команд SwiftMailer send () или batchSend () для ненулевой результат.Из документации :
//Send the message
$numSent = $mailer->send($message);
printf("Sent %d messages\n", $numSent);
/* Note that often that only the boolean equivalent of the
return value is of concern (zero indicates FALSE)
if ($mailer->send($message))
{
echo "Sent\n";
}
else
{
echo "Failed\n";
}
2) Используйте функцию сбои по ссылке , чтобы узнать, были ли определенные адреса отклонены или не могли быть заполнены:
//Pass a variable name to the send() method
if (!$mailer->send($message, $failures))
{
echo "Failures:";
print_r($failures);
}
/*
Failures:
Array (
0 => receiver@bad-domain.org,
1 => other-receiver@bad-domain.org
)
*/
3) В некоторых ситуациях вам может потребоваться включить также возвратные чеки , которые подтверждают, что читатель электронной почты отображал сообщение.Они часто отключаются или игнорируются пользователями или их приложениями электронной почты, но если вы получите квитанцию, это очень подтверждает.Также обратите внимание, что это может произойти через много дней после отправки, поэтому это не синхронный тест в реальном времени, как два выше.
$message->setReadReceiptTo('your@address.tld');
Однако, поскольку в доставке SMTP задействовано так много переменных и уровней систем,Как правило, невозможно быть абсолютно уверенным, что сообщения были доставлены.Лучшее, что вы можете сделать, это убедиться, что вы используете первые две проверки выше.Если вы используете СВОЙ собственный сервер для службы SMTP, то вы также должны следить за своими журналами и очередями, как упомянул Марк Б.
Еще один пример, который подчеркивает необходимость ознакомления с любой базовой системой электронной почты.вы используетеЯ только начал использовать Swift_AWSTransport Джона Хоббса для Amazon Web Services SES.SES имеет возможность возвращать XML-ответ с диагностической информацией для каждого сообщения, отправленного через него.Хотя SwiftMailer по своей сути не понимает, как использовать этот XML-ответ, я считаю его неоценимым для устранения неполадок при доставке.Я упоминаю об этом, потому что обнаружил, что в некоторых случаях приведенные выше проверки # 1 и # 2 будут успешными для SwiftMailer, однако SES не понравилось что-то в моем формате сообщений.Поэтому я рассматриваю синтаксический анализ этого XML в качестве дополнительной проверки.