Swift_TransportException错误:预期响应代码250,但得到代码"",消息&qu


Swift_TransportException Error: Expected response code 250 but got code "", with message "" - Laravel

我有一个问题,从我的Laravel应用程序发送大量的电子邮件。

在解释问题之前,这是服务器配置:

服务器:Google Compute Engine, VM Instance (Ubuntu Server) - standard 1

这是我的配置:

MAIL_DRIVER=smtp  
MAIL_HOST=smtp-relay.gmail.com  
MAIL_PORT=587  
MAIL_USERNAME=my_email@mydomain.com  
MAIL_PASSWORD=********  
MAIL_ENCRYPTION=tls  

所以,我使用谷歌应用程序工作帐户为此目的,一切工作得很好,当我发送电子邮件的一个收件人!

问题是当我试着给我所有的客户发邮件时:

foreach ($users as $key => $user) {
// content construction
    if ($have_one){
    Mail::queue('emails.contact', $body, function($message) use($email)
        {
           $message->from('info@mydomain.com', 'My Name Team');
           $message->to($email)->subject('Fake Subject!');
        });
    }
}

它在发送的前100-200封邮件中运行良好,但在某些时候它只是崩溃了!!

我使用php artisan命令发送这些电子邮件,下面是输出:
输出发送电子邮件

有谁知道怎么修理它吗?

提前感谢!

有些人有同样的问题,你得到。尝试做以下步骤可能会解决您的问题。

a)从gmail登录并访问链接https://www.google.com/settings/security/lesssecureapps并打开不太安全的应用程序。b .)编辑.env文件,如下所示:

MAIL_DRIVER = smtp

MAIL_HOST = smtp.gmail.com

MAIL_PORT = 587

MAIL_USERNAME =用户名//即。username@gmail.com

MAIL_PASSWORD=password//Gmail帐户密码

ssl

MAIL_ENCRYPTION =

c .)在你的控制器中,写下如下内容:

$rawData = request::all();

邮件::队列(program.meeting。emailInvite’,rawData美元,function($message) use ($rawData)

{

美元消息->("info@echosofts.com",Echosofts) ->(到("修剪",爆炸(',',$ rawData [' all_email_id ']))) ->主题($ rawData [' mail_title ']);

});

然后电子邮件工作正常,除了发件人的电子邮件ID是我的谷歌帐户(username@gmail.com)而不是info@cgindians.com。

d .)为了克服发件人电子邮件更改问题,我访问了我的谷歌帐户,并做了以下操作:"设置图标"->设置->帐户和导入->发送邮件->添加另一个您自己的电子邮件地址

我认为有时这种事情只是发生,通常是与网络有关的问题。你能做的最好的事情就是把你的代码放到try/catch块中,当它发生时记录下来,然后再次尝试发送邮件。

有时放下sleep($n)并让它在继续之前休眠一秒钟是有帮助的。

还要密切关注日志,看看将来是否可以发现任何模式,这些模式可能会让您了解哪里出了问题。如果是网络问题,那么除了这个之外就没有什么可做的了。

请先试一下转到

vendor'swiftmailer'swiftmailer'lib'classes'Swift'Mailer.php

$this->_transport->stop();

就在return $sent;之前。

最终代码如下所示:

public function send(Swift_Mime_Message $message, &$failedRecipients = null)
    {
        $failedRecipients = (array) $failedRecipients;
        if (!$this->_transport->isStarted()) {
            $this->_transport->start();
        }
        $sent = 0;
        try {
            $sent = $this->_transport->send($message, $failedRecipients);
        } catch (Swift_RfcComplianceException $e) {
            foreach ($message->getTo() as $address => $name) {
                $failedRecipients[] = $address;
            }
        }
        $this->_transport->stop();
        return $sent;
    }

也查看此链接https://github.com/mustafaileri/swiftmailer/commit/d289295235488cdc79473260e04e3dabd2dac3ef