Email 仅在服务器上出现邮件异常

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版

舞台

我最近部署了一个web应用程序。应用程序需要发送电子邮件有几个原因

我正在为我的域名使用yandex商务电子邮件服务,在我的域名上有许多电子邮件帐户,我可以毫无问题地使用这些电子邮件地址

我已经编写了一些代码,使用Laravel的Mail::send在我的Laravel应用程序上发送电子邮件。见下文第2页。您可以在下面的1中看到我的config/mail.php设置

我正在使用WAMP服务器在我的windows计算机上测试我的应用程序

我的生产服务器是运行Linux的VPS服务器。PHP版本5.5.29

问题

在我的本地测试环境中,一切都非常完美; 我可以发送邮件,并且可以毫无问题地发送到hotmail、gmail或我所在域的电子邮件

但是,在服务器上,我尝试发送电子邮件时收到一个错误。有关错误,请参见3

在同一台服务器上,我能够使用PHPMailer以相同的电子邮件帐户、电子邮件设置和凭据发送电子邮件,而且没有任何问题

问题与思考

一切都在我的本地环境中正常工作,这让我觉得我的服务器配置、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();