Php Swift_TransportException错误:预期响应代码为250,但收到代码为“&引用;,带“信息”"E;”拉维尔
我在从我的Laravel应用程序发送大量电子邮件时遇到问题 在解释问题之前,以下是服务器配置: 服务器:谷歌计算引擎,虚拟机实例(Ubuntu服务器)-标准1 这是我的配置: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 所以,我使用谷歌
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;
}