Gmail SMTP 错误 - 临时阻止?

Gmail SMTP error - Temporary block?

我正在使用 Gmail 服务器通过程序从我的系统发送电子邮件。 最近我开始收到这样的错误:

Data command failed: 421 4.7.0 Temporary System Problem. Try again later (WS). 6sm3756432pab.11 - gsmtp

原因在the support中给出。

任何人都可以告诉我可以触发此问题的电子邮件数量是多少?

还是其他原因?

如果您使用免费的 Gmail 帐户发送批量电子邮件,您可能会在早期看到此类回复,因为该服务并非旨在向已选择的订阅者发送应用程序交易消息、新闻通讯等活动在。 IMAP/SMTP 提供的服务是为了让您能够通过 Gmail 帐户使用 Microsoft Outlook 等电子邮件客户端。

如果您需要发送交易消息,我建议您 google "AWS SES" 作为初学者。

当我尝试使用 Java 中的多线程程序发送批量电子邮件时,我也遇到了同样的问题。然后我听说了Thread Pool Executor。我通过将线程池大小设置为10来使用它。之后,这个问题已经为我解决了。

如果您使用脚本快速连续发送电子邮件,则会出现此错误。 一个简单的解决方法是在发送电子邮件之间应用睡眠定时器。

我在每封连续的电子邮件之间应用了 1 秒的计时器。

import time
time.sleep(1) // equivalent to 1 second sleep

我同意 Anubhav Shrimali 的观点,即如果 Gmail 同时收到多个请求,则会出现此错误。 我在 Node.js 中使用 Nodemailer 解决了这个问题,方法是在每封连续的电子邮件之间添加 1 秒延迟,如下所示:

array.foreach(function(data, index) {
    setTimeout(() => {
        sendmail();            
    }, 1000 * index);

    function sendmail() {
        transporter.sendMail(mailOptions, function (error, info) {
            if (error) {
                console.log(error);
            } else {
                console.log('Email sent' + info.response);
            }
        });
    }
});

如果遇到这种情况,应该放入重试队列,多次重试失败会通知监控

希望这篇link能帮到你:

https://support.google.com/a/answer/3726730

这可能是从同一 IP 地址发送大量电子邮件的结果。如前所述,使用 python 睡眠功能,以便在发送之间有一点等待。我发现 1 秒通常对我来说时间不够,有时我会选择 1 到 5 之间的随机秒数以获得最佳结果。

import random
import time
time.sleep(random.randint(1, 5))

不要忘记导入正确的模块。

休息20分钟,重试,错误消失