Laravel Mail通过smtp超时错误

时间:2015-02-13 19:52:43

标签: php email laravel swiftmailer

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

  

异常'Swift_TransportException',并在/srv/www/application/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/AbstractSmtpTransport.php:405中显示消息'连接到mail_server:25超时'

我的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或此特定问题的答案。

修改

请注意,从此Laravel应用程序发送的所有邮件都在队列中处理,因此过度/并发应该不是问题。

1 个答案:

答案 0 :(得分:-1)

对于Gmail,请将驱动程序从smtp更改为sendmail。我一直在摸不着头脑,差不多一个小时,直到我偶然发现它。