2017-02-16 34 views
1

Я хочу отправить почту с PHPMailer с моего хоста. работает нормально, но слишком медленно. , как через некоторое время его отправить электронное письмо за одну секунду. , но в основном это заняло 2 мин или более некоторое время, когда потребовалось 30 мин или более. любой способ отправки по электронной почте. или любым способом отправить почту быстро, как через 3 сек или 10 секунд.отправка электронной почты с помощью PHPMailer slow

$mail->Timeout = 36000; 
$mail->Subject = "Registration"; 
$mail->From = "[email protected]"; 
$mail->FromName = "Educatorguru.com"; 
$mail->AddReplyTo("[email protected]"); 
$mail->AddAddress($email); 
$mail->Body =$message2; 
$mail->IsHTML(true); 
$mail->Send(); 
+1

выглядит проблема сервера, код tooo простой для этой проблемы –

ответ

2

PHPMailer вики имеет an article on maximising performance when sending in volume, но подобные меры помогают отдельные сообщения тоже.

С кодом, который вы отправили, это означает, что вы отправляете с использованием функции PHP mail(), которая использует двоичный файл sendmail для открытия синхронного SMTP-подключения к localhost - вы можете помочь отладить то, что на самом деле держит вещи, добавив это в свой скрипт :

$mail->isSMTP(); 
$mail->Host = 'localhost'; 
$mail->SMTPDebug = 2; 

Это даст много отладочного вывода с отметками времени, чтобы вы могли видеть, какая часть работает медленно.

Альтернативный вариант - не отправлять в интерактивном режиме - хранить ваши сообщения в списке дел/очереди и получать задание cron или другой процесс для получения сообщений и отправки их асинхронно - это будет означать, что ваши страницы могут мгновенно вернуться без необходимости ждать отправки сообщения.