Я работаю над сайтом электронной коммерции, который отправляет клиенту несколько электронных писем, когда они завершают свой заказ с помощью службы ретрансляции SMTP G Suite. Но большое количество этих электронных писем терпят неудачу. Похоже, что в этом нет никакого шаблона — иногда все электронные письма будут отправляться, иногда только один или два, а иногда ни одного.
Я получаю следующую ошибку: 421, "4.7.0", Try again later, closing connection
,
Смотря здесь: https://support.google.com/a/answer/3726730?hl=en действительно не помогает мне отладить это или выяснить, почему некоторые электронные письма терпят неудачу.
Я использую класс phpmailer (https://sourceforge.net/projects/phpmailer/)
Кажется, проблема возникает, когда первое рукопожатие терпит неудачу:
function Hello($host="") {
$this->error = null; # so no confusion is caused
if(!$this->connected()) {
$this->error = array(
"error" => "Called Hello() without being connected");
return false;
}
# if a hostname for the HELO was not specified determine
# a suitable one to send
if(empty($host)) {
# we need to determine some sort of appopiate default
# to send to the server
$host = "localhost";
}
// Send extended hello first (RFC 2821)
//If this fails then the second attempt will always fail
if(!$this->SendHello("EHLO", $host))
{
//when this fails it generates the try again later error
if(!$this->SendHello("HELO", $host))
return false;
}
return true;
}
Так каков наилучший подход для отладки этого?
Сообщение об ошибке довольно явно. Вы вызываете стороннюю веб-службу, которая возвращает код ошибки, в котором говорится, что сервер, на который вы звоните, загружен, попробуйте позже. Это бесплатный сервис, который позволяет вам перейти на платный план? Обычно, когда ты видишь его вещи.
Других решений пока нет …