Email 仅在服务器上出现邮件异常
舞台 我最近部署了一个web应用程序。应用程序需要发送电子邮件有几个原因 我正在为我的域名使用yandex商务电子邮件服务,在我的域名上有许多电子邮件帐户,我可以毫无问题地使用这些电子邮件地址 我已经编写了一些代码,使用Laravel的Mail::send在我的Laravel应用程序上发送电子邮件。见下文第2页。您可以在下面的1中看到我的config/mail.php设置 我正在使用WAMP服务器在我的windows计算机上测试我的应用程序 我的生产服务器是运行Linux的VPS服务器。PHP版本5.5.29 问题 在我的本地测试环境中,一切都非常完美; 我可以发送邮件,并且可以毫无问题地发送到hotmail、gmail或我所在域的电子邮件 但是,在服务器上,我尝试发送电子邮件时收到一个错误。有关错误,请参见3 在同一台服务器上,我能够使用PHPMailer以相同的电子邮件帐户、电子邮件设置和凭据发送电子邮件,而且没有任何问题 问题与思考 一切都在我的本地环境中正常工作,这让我觉得我的服务器配置、PHP版本、配置或扩展都有问题,但我不知道如何判断 我试过什么但没有成功 注释这些行以从默认邮件地址发送电子邮件。 并且还将我的默认电子邮件地址更改为另一个,该电子邮件地址除了在该项目的生产服务器上之外,在任何地方都有效Email 仅在服务器上出现邮件异常,email,smtp,laravel-5,server,production-environment,Email,Smtp,Laravel 5,Server,Production Environment,舞台 我最近部署了一个web应用程序。应用程序需要发送电子邮件有几个原因 我正在为我的域名使用yandex商务电子邮件服务,在我的域名上有许多电子邮件帐户,我可以毫无问题地使用这些电子邮件地址 我已经编写了一些代码,使用Laravel的Mail::send在我的Laravel应用程序上发送电子邮件。见下文第2页。您可以在下面的1中看到我的config/mail.php设置 我正在使用WAMP服务器在我的windows计算机上测试我的应用程序 我的生产服务器是运行Linux的VPS服务器。PHP版
//$transport = Mail::getSwiftMailer()->getTransport();
//$transport->setUsername($username);
//$transport->setPassword($password);
已禁用邮件加密。设置
'encryption' => '',
尝试不同的司机
'driver' => 'mail',
1 My config/mail.php
2我使用的代码
以上代码说明:
该代码基本上允许我向任何电子邮件帐户发送电子邮件,
我有很多电子邮件账户。正如我所说,这在我的本地测试环境中非常有效
3.错误
AuthHandler.php第181行中的Swift_TransportException:
无法使用用户名在SMTP服务器上进行身份验证
name@domain.com使用2个可能的验证器
4工作PHPMailer脚本
很难说问题出在哪里。或者为什么它在您的开发环境中工作。但通过谷歌快速搜索,我对smpt.yandex.com进行了以下设置: 邮件服务器地址-smtp.yandex.com; 连接安全-SSL; 港口-465。 因此,它不应该在您的开发环境中工作。它为什么会起作用对我来说是个谜
请参阅:带有SSL的端口465给出了此错误;StreamBuffer.php第265行中的Swift_TransportException:无法与主机smtp.yandex.com建立连接[无法找到套接字传输SSL-在配置php时是否忘记启用它?19362400]端口465与TLS提供超时错误;AbstractSmtpTransport.php第404行中的Swift_TransportException:连接到tcp://smtp.yandex.com:465 超时我刚刚将我的工作PHPMailer代码添加到问题中。4点见
'driver' => 'smtp',
'host' => 'smtp.yandex.com',
'port' => 587,
'from' => ['address' => 'name@domain.com', 'name' => 'name'],
'encryption' => 'tls',
'username' => 'name@domain.com',
'password' => 'password',
'sendmail' => '/usr/sbin/sendmail -bs',
'pretend' => false,
Mail::send($message, $data, function ($message) use ($account, $to, $subject)
{
$acc = config("mail.accounts.$account");
$senderAddress = array_get($acc, 'address');
$username = array_get($acc, 'username', $senderAddress);
$password = array_get($acc, 'password', '');
$senderName = array_get($acc, 'name', $acc['address'], $senderAddress);
$replyToAddress = array_get($acc, 'replyTo.0', $senderAddress);
$replyToName = array_get($acc, 'replyTo.1', $senderName);
$message->from($senderAddress, $senderName)
->replyTo($replyToAddress, $replyToName)
->subject($subject)
->to($to);
$transport = Mail::getSwiftMailer()->getTransport();
$transport->setUsername($username);
$transport->setPassword($password);
});
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->SMTPAuth = true;
$mail->Host = "smtp.yandex.com";
$mail->SMTPSecure = 'tls';
$mail->Port = 587;
$mail->Username = $sender; // SMTP account username
$mail->Password = $password; // SMTP account password
$mail->SetFrom($sender, 'Name');
$mail->AddReplyTo($sender, 'Name');
$mail->Subject = $subject;
$mail->MsgHTML($message);
$mail->AddAddress($to, $to);
$mail->Send();