我正在使用Laravel 5.8,并且尝试使用以下设置从系统发送电子邮件。 何时一一发送电子邮件是可以的,但是当我一起发送一堆营销电子邮件时,它在发送20封电子邮件并给我以下错误后就停止了。
我正在使用.env中的以下设置。
static async Task Main(string[] args)
{
Coffee cup = PourCoffee();
Console.WriteLine("coffee is ready");
var eggsTask = FryEggsAsync(2);
var baconTask = FryBaconAsync(3);
var toastTask = MakeToastWithButterAndJamAsync(2);
var allTasks = new List<Task>{eggsTask, baconTask, toastTask};
while (allTasks.Any())
{
Task finished = await Task.WhenAny(allTasks);
if (finished == eggsTask)
{
Console.WriteLine("eggs are ready");
}
else if (finished == baconTask)
{
Console.WriteLine("bacon is ready");
}
else if (finished == toastTask)
{
Console.WriteLine("toast is ready");
}
allTasks.Remove(finished);
}
Juice oj = PourOJ();
Console.WriteLine("oj is ready");
Console.WriteLine("Breakfast is ready!");
async Task<Toast> MakeToastWithButterAndJamAsync(int number)
{
var toast = await ToastBreadAsync(number);
ApplyButter(toast);
ApplyJam(toast);
return toast;
}
}
发送20封电子邮件后,我遇到了错误消息
MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=465
MAIL_USERNAME=my user name
MAIL_PASSWORD=my gmail app password
我也尝试使用TLS,但是在发送20封电子邮件后,它也给我同样的错误...
答案 0 :(得分:1)
所有电子邮件发件人都具有在特定的秒内发送大量电子邮件的限制。 与亚马逊一样,SES每秒限制40封电子邮件。
我正在使用以下逻辑来解决此问题。
$count = 0;
foreach ($users as $user) {
$count++;
$user->notify(
(new Notification($emailBody))
->delay(intdiv($count,30))
);
}
答案 1 :(得分:0)
这听起来像是您在发送DATA命令而没有先发送有效的RCPT TO命令的错误。这可能意味着服务器未接受任何RCPT TO命令。我建议跟踪整个SMTP会话,以便您可以了解情况如何。