Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Swift_TransportException错误:预期响应代码为250,但收到代码为“&引用;,带“信息”"E;”拉维尔_Php_Laravel_Email_Smtp_Google Compute Engine - Fatal编程技术网

Php Swift_TransportException错误:预期响应代码为250,但收到代码为“&引用;,带“信息”"E;”拉维尔

Php Swift_TransportException错误:预期响应代码为250,但收到代码为“&引用;,带“信息”"E;”拉维尔,php,laravel,email,smtp,google-compute-engine,Php,Laravel,Email,Smtp,Google Compute Engine,我在从我的Laravel应用程序发送大量电子邮件时遇到问题 在解释问题之前,以下是服务器配置: 服务器:谷歌计算引擎,虚拟机实例(Ubuntu服务器)-标准1 这是我的配置: MAIL_DRIVER=smtp MAIL_HOST=smtp-relay.gmail.com MAIL_PORT=587 MAIL_USERNAME=my_email@mydomain.com MAIL_PASSWORD=******** MAIL_ENCRYPTION=tls 所以,我使用谷歌

我在从我的Laravel应用程序发送大量电子邮件时遇到问题

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

服务器:谷歌计算引擎,虚拟机实例(Ubuntu服务器)-标准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命令发送此电子邮件,这是输出:

有人知道怎么修吗


提前谢谢

我认为有时候这种事情会发生,通常是与网络相关的问题。您所能做的最好的事情就是将代码放入try/catch块,在发生时记录,然后再次尝试发送电子邮件

有时,在继续之前,放下一个
睡眠($n)
,让它睡上一秒钟会有帮助


同时也要密切关注日志,看看你是否能在将来发现任何可能让你知道哪里出了问题的模式。如果这是一个网络问题,除此之外,没有什么可以做的。

有些人和你遇到的问题一样。尝试执行以下步骤可能会解决您的问题

A.)从gmail登录,访问链接并打开不太安全的应用程序。 B.)编辑.env文件,如下所示:

邮件驱动程序=smtp

MAIL_HOST=smtp.gmail.com

邮件端口=587

邮件\用户名=用户名//即。username@gmail.com

MAIL\u PASSWORD=密码//Gmail帐户密码

邮件加密=ssl

C.)在控制器中,写下以下内容:

$rawData=request::all()

Mail::queue('program.meeting.emailInvite',$rawData, 函数($message)使用($rawData)

{

$message->from('info@echosofts.com', ‘Echosofts’->到(数组_映射('trim',explode(','), $rawData['all_email_id']))->subject($rawData['mail_title'])

}))

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

D.)为了解决发件人更改电子邮件的问题,我访问了我的google帐户,并执行以下操作: “设置图标”->“设置”->“帐户和导入”->“以其他身份发送邮件”->“添加您自己的电子邮件地址”。

请先尝试 去

并添加
$this->_transport->stop()

就在
返回$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;
    }

同时检查此链接

它通常在特定用户处失败,还是看起来是随机的?您好,谢谢您的回复!这似乎是一种随机行为。有时它会在100、120或90-150之间的任何其他用户处停止。您可以阅读此内容。这是一个不一样的结果,但可能很接近。请阅读链接@谢谢你的建议!但不幸的是,另一个问题是身份验证问题。。。在这种情况下,我已经验证了我的Google App Work帐户,并且确实向用户发送了事务性电子邮件(也是我运行php artisan命令时发送的第一封172电子邮件),您是否检查了这些邮件发送的特定域(如仅适用于gmail和gmail附加的web域)是否不适用于域外。请检查并回复我。谢谢你的建议!是的!事实上,此错误来自try-catch事件!您好@Manish感谢您花时间进行研究!好。。我已经做了“lesssecureapps”的事情。。。(这就是我可以从我的laravel应用程序发送电子邮件的方式)。让我试试其他的推荐!我唯一担心的是:通过这种方式发送电子邮件,所有收件人都会被其他人看到,对吗
to(数组映射('trim',explode(',',$rawData['all\u email\u id'))
Ok,请稍等!!遗憾的是,它没有起作用!谢谢你的努力,伙计!!我会继续寻找!!!
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;
    }