批量电子邮件失败,显示421 4.7.0

ran*_*b14 5 java email smtp jakarta-mail gmail-api

我需要与我的组织一起发送批量电子邮件。我是Java Mail API,并使用以下配置发送邮件。

        props.put("mail.transport.protocol", "smtp");
        props.put("mail.smtp.auth", "true");
        props.put("mail.smtp.starttls.enable", "true");
        props.put("mail.smtp.host", "smtp.gmail.com");
        props.put("mail.smtp.port", "587");
Run Code Online (Sandbox Code Playgroud)

邮件1从:abc@org.com到:emp1@org.com

邮件2从:abc@org.com到:emp2@org.com

...

邮件被循环触发。

问题:前80封电子邮件已成功发送。从第81封邮件中,我失败了,并出现以下错误,出现了10-15封邮件,后来又成功发送了几封邮件。

在743封电子邮件中,有400封失败和343封邮件是成功的。

    INFO   | jvm 1    | 2017/08/18 07:25:54 | com.sun.mail.smtp.SMTPSendFailedException: 421 4.7.0 Try again later, closing connection. (MAIL) xsdsfasdsa.96 - gsmtp
    INFO   | jvm 1    | 2017/08/18 07:25:54 | 
    INFO   | jvm 1    | 2017/08/18 07:25:54 |   at com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:2108)
    INFO   | jvm 1    | 2017/08/18 07:25:54 |   at com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:1609)
    INFO   | jvm 1    | 2017/08/18 07:25:54 |   at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:1117)
Run Code Online (Sandbox Code Playgroud)
  1. 帮助我如何解决它。
  2. smtp.gmail.com 是否有每分钟的特定限制

谢谢,拉娜

wp7*_*8de 8

是的,我认为通过 Gmail 发送 SMPT 邮件有每分钟的限制(根据我的经验,每分钟大约 80 条,其他人大约80 - 100 条)。但这并不是 100% 的硬限制,而是在 Gmail 认为适当时强制执行的某种软限制。

首先,检查 G Suite 管理区域中的消息队列。如果队列很大并且仍在增长,则说明发送速度太快。

一些有用的链接:

当您遇到错误时,没有进一步的解释出了什么问题

421,“4.7.0”,稍后重试,关闭连接。

一般建议:

如果使用池化,则 Nodemailer 会保持固定数量的连接打开,并在连接可用时发送下一条消息。当您想要批量发送大量消息或者您的提供商允许您仅使用少量并行连接时,它非常有用。

  • 不要发送得太快
  • 不要一次发送超过 50 封电子邮件
  • 不要假设 Gmail 是本地系统。这是一项外部服务,使用复杂的方法使电子邮件在全球范围内可用,延续了一项 42 年前的发明,但远非完美。
  • 不要尝试愚蠢的事情,否则 Gmail 会惩罚你。

寓意:如果发送大量电子邮件,最好使用您自己的电子邮件服务器。