javax 邮件超出发送限制:SMTPSendFailedException
javax mail exceeding sending limit : SMTPSendFailedException
我正在尝试使用 javaxmail 通过 for 循环发送 500 多封电子邮件 - 没有垃圾邮件,电子邮件地址已知且经过认证。
目的是在发送 (Thread.sleep(...)) 之间有一点时间延迟(1 - 5 秒),这样邮件就不会自动进入垃圾邮件文件夹。但是在将它发送到我自己的电子邮件地址进行测试一段时间后,我不断收到此错误:
com.sun.mail.smtp.SMTPSendFailedException: 554 5.7.0 Your message
could not be sent. The limit on the number of allowed outgoing
messages was exceeded. Try again later.
我正在使用我们自己的 smtp 服务器。
properties.setProperty("mail.smtp.auth", "true");
properties.setProperty("mail.smtp.host", host);
properties.setProperty("mail.smtp.port", "25");
我想知道"try again later"的时间跨度是多少?
有人知道极限吗?
还有任何关于如何避免这种情况的建议都会有所帮助。
在大多数情况下,您应该尽量避免发送大量邮件(垃圾邮件过滤器无论如何都会对大量邮件进行区分),但在您的情况下,有一个更简单的答案。首选分布式邮件处理,具有基于时间的限制速率等
您可能遇到的问题是(如错误消息所述)您试图超出外发邮件数量的限制。 (您可以通过检查 getCommand and getReturnCode 获得更多信息。)如果您将 POSTFIX 与 policyd 一起使用,这里是外发邮件限制配置的示例:
您可以通过重新配置您的 SMTP 服务器来 "fix" 这个问题。尽管我的建议是(为了避免进入黑名单)拆分您的整个电子邮件发送过程:
- 创建一个(每小时 n 次?)调用邮件发件人进程的 cron 作业
- 在这个过程中你应该有一个限制(例如:100)并尝试发送邮件
- 如果邮件已发送就没问题,否则下次 cron 是 运行 你可以尝试重新发送它(使用最大数量重试一些日志信息)
在大多数情况下,这些限制是为了您自身的安全。如果发生软件错误等,这些可以防止您进入黑名单。
如果您超出了用户的电子邮件发送限制,您可能会看到一条错误消息,例如:
- 5.7.0 无法发送您的消息。超出了允许传出消息的数量限制。稍后再试。
- 抱歉,您的消息接收人数过多。
为了保持系统健康和您的帐户安全,对用户可以发送的邮件数量进行了限制。限制限制每小时发送的消息数量和每条消息的收件人数量。达到这些限制之一后,用户将无法发送新邮件,但他们仍然可以访问自己的帐户并接收传入的电子邮件。
当前电子邮件限制
- 每小时最多 150 条消息。
- 每封邮件最多 99 个收件人。
各种ISP供应商给出了限制。你可以从这里看看:SMTP Sending Limit and Email Rate Limits for ISPs - Verizon, Comcast, EarthLink, etc.
在Plesk Documentation中,你会得到Custom Limits for Service Plans
、Limits for Subscriptions
、Limits for Domains
和Limits for Mailboxes
。
100 messages will be sent successfully, but starting from 101 message
for the same hour Webmail will show the following error.
资源Link:
这里有很多人遇到同样的问题,并且尝试了很多解决方案的很多信息。
https://productforums.google.com/forum/#!topic/gmail/yrEDNJ3fChs
这里还有一个 link 批量发件人指南:
https://support.google.com/mail/answer/81126?hl=en
我正在尝试使用 javaxmail 通过 for 循环发送 500 多封电子邮件 - 没有垃圾邮件,电子邮件地址已知且经过认证。
目的是在发送 (Thread.sleep(...)) 之间有一点时间延迟(1 - 5 秒),这样邮件就不会自动进入垃圾邮件文件夹。但是在将它发送到我自己的电子邮件地址进行测试一段时间后,我不断收到此错误:
com.sun.mail.smtp.SMTPSendFailedException: 554 5.7.0 Your message could not be sent. The limit on the number of allowed outgoing messages was exceeded. Try again later.
我正在使用我们自己的 smtp 服务器。
properties.setProperty("mail.smtp.auth", "true");
properties.setProperty("mail.smtp.host", host);
properties.setProperty("mail.smtp.port", "25");
我想知道"try again later"的时间跨度是多少?
有人知道极限吗?
还有任何关于如何避免这种情况的建议都会有所帮助。
在大多数情况下,您应该尽量避免发送大量邮件(垃圾邮件过滤器无论如何都会对大量邮件进行区分),但在您的情况下,有一个更简单的答案。首选分布式邮件处理,具有基于时间的限制速率等
您可能遇到的问题是(如错误消息所述)您试图超出外发邮件数量的限制。 (您可以通过检查 getCommand and getReturnCode 获得更多信息。)如果您将 POSTFIX 与 policyd 一起使用,这里是外发邮件限制配置的示例:
您可以通过重新配置您的 SMTP 服务器来 "fix" 这个问题。尽管我的建议是(为了避免进入黑名单)拆分您的整个电子邮件发送过程:
- 创建一个(每小时 n 次?)调用邮件发件人进程的 cron 作业
- 在这个过程中你应该有一个限制(例如:100)并尝试发送邮件
- 如果邮件已发送就没问题,否则下次 cron 是 运行 你可以尝试重新发送它(使用最大数量重试一些日志信息)
在大多数情况下,这些限制是为了您自身的安全。如果发生软件错误等,这些可以防止您进入黑名单。
如果您超出了用户的电子邮件发送限制,您可能会看到一条错误消息,例如:
- 5.7.0 无法发送您的消息。超出了允许传出消息的数量限制。稍后再试。
- 抱歉,您的消息接收人数过多。
为了保持系统健康和您的帐户安全,对用户可以发送的邮件数量进行了限制。限制限制每小时发送的消息数量和每条消息的收件人数量。达到这些限制之一后,用户将无法发送新邮件,但他们仍然可以访问自己的帐户并接收传入的电子邮件。
当前电子邮件限制
- 每小时最多 150 条消息。
- 每封邮件最多 99 个收件人。
各种ISP供应商给出了限制。你可以从这里看看:SMTP Sending Limit and Email Rate Limits for ISPs - Verizon, Comcast, EarthLink, etc.
在Plesk Documentation中,你会得到Custom Limits for Service Plans
、Limits for Subscriptions
、Limits for Domains
和Limits for Mailboxes
。
100 messages will be sent successfully, but starting from 101 message for the same hour Webmail will show the following error.
资源Link:
这里有很多人遇到同样的问题,并且尝试了很多解决方案的很多信息。 https://productforums.google.com/forum/#!topic/gmail/yrEDNJ3fChs
这里还有一个 link 批量发件人指南: https://support.google.com/mail/answer/81126?hl=en