通过smtp发送Laravel邮件超时错误


Laravel Mail via smtp Timeout Error

我正试图弄清楚通过Laravel的Mail::...函数发送的电子邮件发生了什么。电子邮件未发送,我收到以下错误消息:

异常"Swift_TransportException",在/srv/www/application/vvendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/AbstractSmtpTransport.php中显示消息"Connection to mail_server:25 Timed Out"

我的app/config/mail.php设置:

return array(
  'driver' => 'smtp',
  'host' => 'mail_server',
  'port' => 25,
  'from' => array('address' => null, 'name' => null),
  //'encryption' => 'tls',
  'username' => null,
  'password' => null,
  'sendmail' => '/usr/sbin/sendmail -bs',
  'pretend' => false,
);

一个问题是,这通常很好,但偶尔会出现上述错误,而且这种情况似乎只发生在特定的域中。例如,向bob@test.commike@other.com发送邮件可以正常工作,但一旦尝试向jack@specific.comjill@specific.com发送邮件,就会记录超时消息,并且不会发送邮件。

以下是发送邮件的功能:

$message = "";
$result = Mail::send('templates.email', $form, function($mail) use (&$from_email, &$from_name, &$to_email, &$subject, &$message, &$emails){
  $mail->from($from_email, $from_name);
  $mail->to($to_email);
  if (count($emails)>0)
    $mail->cc($emails);
  $mail->subject($subject);
  $message = $mail->getSwiftMessage();
  $message->setCharset('iso-8859-1');
  $message->setMaxLineLength(1000);
  $message->setContentType('multipart/mixed');
});

我认为这是一个最终用户问题,因为它似乎只发生在少数特定的域上,但错误消息表明,在发送邮件之前,到我的mail_server的连接已经超时。如果其他人遇到过这个问题,那就太好了。我所有寻找解决方案的尝试都提供了不适用于拉拉威尔或这个特定问题的答案。

编辑

注意,从这个Laravel应用程序发送的所有邮件都在队列中处理,所以这里不应该出现过度工作/并发的问题。

对于Gmail,将驱动程序从smtp更改为sendmail。我已经为此挠头将近一个小时了,直到我偶然发现了这一点。