Я нашел несколько старых тем, имеющих аналогичную проблему, но у большинства из них не было ответов или если они были, предложения не были актуальны в моем случае.PHPMailer, использующий SMTP медленный SMTP при отправке писем
У меня была полная настройка в один момент с функцией почты PHP, и она отлично работала. Мне пришлось отформатировать жесткий диск в один момент и настроить сервер с нуля. Впоследствии функция почты PHP стала медленной. Изучая решения для этого, я обнаружил, что большинство людей рекомендуют PHPMailer. Я переключился на это, но проблема все еще сохранялась.
В большинстве случаев я отправляю по меньшей мере два письма на страницу с разными телами, но используя один и тот же объект. Задержка составляет около 3-4 секунд. Пожалуйста, найдите соответствующий код ниже ($ EMAIL1 и $ email2 массивов, содержащих действительные адреса электронной почты):
function sendEmail ($email1, $subject1, $message1, $email2, $subject2, $message2)
{
require_once('../PHPMailer/class.phpmailer.php');
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->SMTPDebug = 0;
$mail->SMTPAuth = true;
$mail->SMTPSecure = 'ssl';
$mail->Host = "smtp.gmail.com";
$mail->Port = 465;
$mail->IsHTML(true);
$mail->Username = $gmail_username;
$mail->Password = $gmail_password;
$mail->SetFrom($gmail_address,$email_title);
$mail->Subject = $subject1;
$mail->Body = $message1;
foreach($email1 as $k => $v) { $mail->AddAddress($v); }
if(!$mail->Send()) { $emailreturn['cust'] = 0; } else { $emailreturn['cust'] = 1; }
$mail->ClearAddresses();
$mail->Subject = $subject2;
$mail->Body = $message2;
foreach($email2 as $k => $v) { $mail->AddAddress($v); }
if(!$mail->Send()) { $emailreturn['partner'] = 0; } else { $emailreturn['partner'] = 1; }
$mail->ClearAddresses();
}
Я не вижу никакой ошибки с помощью отладки и сообщений, он просто занимает больше времени, чем обычно, чтобы отправить по электронной почте.
Что я пробовал:
- Я выключил брандмауэр просто чтобы проверить его, и это то же самое.
- Перешел на «ДУС», что сделало его еще более медленным
- Направлен каждое письмо, используя объект, который дал на 3-4 секундную задержку для каждого сообщения электронной почты
- поиграл с дополнительной конфигурацией, закомментируйте или установить ложь, все с тем же результатом
Есть ли что-либо еще в настройках почтовой программы или есть какая-то закулисная конфигурация, которую я должен проверить? Thanks
+1, хотя я совершенно уверен, что нет никакого способа, чтобы иметь постоянное соединение с SMTP, специально не с Gmail, ни другого аналогичные компании. – tftd
Да, есть; это называется keepalive. Вы можете отправлять несколько сообщений во время одного соединения. Существует пример использования его в примере списка рассылки, предоставленном PHPMailer. – Synchro