我正在试图弄清楚通过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.com
和mike@other.com
发送邮件可以正常工作,但只要您尝试发送到jack@specific.com
或jill@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应用程序发送的所有邮件都在队列中处理,因此过度/并发应该不是问题。
答案 0 :(得分:-1)
对于Gmail,请将驱动程序从smtp更改为sendmail。我一直在摸不着头脑,差不多一个小时,直到我偶然发现它。