预期的响应代码354,但得到的代码为“ 503”,并首先显示消息“ 503 5.5.1 RCPT。w15sm3670747wrs.80-gsmtp”

时间:2020-02-06 19:10:39

标签: laravel laravel-5 smtp gmail

我正在使用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封电子邮件后,它也给我同样的错误...

2 个答案:

答案 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会话,以便您可以了解情况如何。