javax邮件超出发送限制:SMTPSendFailedException

时间:2016-07-28 19:11:57

标签: java smtp javamail

我正在尝试使用javaxmail通过for循环发送500多封电子邮件 - 没有垃圾邮件,电子邮件地址已知并经过认证。

目的是在发送(Thread.sleep(...))之间有一点时间延迟(1 - 5秒),因此邮件不会自动进入垃圾邮件文件夹。但是经过一段时间的测试后发送到我自己的电子邮件地址,我不断收到这个错误:

  

com.sun.mail.smtp.SMTPSendFailedException:554 5.7.0您的留言   无法发送。允许传出的数量限制   消息被超过。稍后再试。

我正在使用自己的smtp服务器。

    properties.setProperty("mail.smtp.auth", "true");
    properties.setProperty("mail.smtp.host", host);
    properties.setProperty("mail.smtp.port", "25");

我想知道“稍后再试”的时间跨度是多长时间?

有人知道这个限制吗?

任何建议如何避免这种情况都会有所帮助。

3 个答案:

答案 0 :(得分:3)

在大多数情况下,您应该尽量避免发送大量邮件(垃圾邮件过滤器无论如何都会对大量邮件产生歧视),但在您的情况下,答案更为简单。分布式邮件处理是首选,具有基于时间的限制率等。

您可能遇到的问题是(如errormsg所示)您尝试超出外发邮件号码的限制。 (您可以通过检查getCommand and getReturnCode来获取更多信息。)如果您使用带有policyd的POSTFIX,则是传出邮件限制配置的示例:

  

http://wiki.policyd.org/accounting?s[]=limit

您可以通过重新配置SMTP服务器来“修复”此问题。我的建议是(为了避免进入阻止列表)拆分整个电子邮件发送过程

  • 创建一个(n小时?)cron作业,调用邮件发件人流程
  • 在此过程中您应该有一个限制(例如:100)并尝试发送邮件
  • 如果发送邮件就没问题,否则下次cron运行时你可以尝试重新发送它(使用最大数量重试一些日志信息)

在大多数情况下,这些限制是为了您自己的安全。如果发生软件错误等,那些会阻止您进入黑名单。

答案 1 :(得分:1)

如果超过用户电子邮件发送限制,您可能会看到错误消息,例如:

  • 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 PlansLimits for SubscriptionsLimits for DomainsLimits for Mailboxes

  

将成功发送100条消息,但从101消息开始   对于同一小时,Webmail将显示以下错误。

资源链接:

How outgoing messages limit works?

答案 2 :(得分:0)

这里有很多人都有同样的问题,许多解决方案的许多信息都在尝试中。 https://productforums.google.com/forum/#!topic/gmail/yrEDNJ3fChs

此处还有批量发件人指南的链接: https://support.google.com/mail/answer/81126?hl=en