首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Javamail错误: SMTPAddressFailedException: 450个来自IP的连接(速率控制)

Javamail错误: SMTPAddressFailedException: 450个来自IP的连接(速率控制)
EN

Stack Overflow用户
提问于 2015-03-20 16:19:51
回答 1查看 5.1K关注 0票数 0

我有一个Spring4.1.1 web应用程序,用户可以在其中设置一些预定的任务。当这些任务完成后,管理员将收到与SMTP方法一起发送的自动电子邮件。

对于电子邮件,我使用jars: javax.mail-api-1.5.2.jar和mail-1.5.0-b01.jar

电子邮件一开始是正确发送的,但是当任务频率上升时,我开始得到以下异常,随后的所有电子邮件都失败了。我可以在10分钟内发送大约30封电子邮件。

代码语言:javascript
运行
复制
com.sun.mail.smtp.SMTPAddressFailedException: 450 too many connections from your IP (rate controlled)

at com.sun.mail.smtp.SMTPTransport.rcptTo(SMTPTransport.java:1862)
at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:1118)
at com.synaptic.email.MessageMail.sendMessage(MessageMail.java:152)
at com.synaptic.email.EmailManagerImpl.sendGeneralEmail(EmailManagerImpl.java:423)

我发送电子邮件的代码片段是:

代码语言:javascript
运行
复制
    public void sendMessage(Brand brand, String timeout) throws MessagingException
{
    try {
        // Prepare message
        Properties props = new Properties();

        props.put("mail.smtp.host", mailHost);
        props.put("mail.smtp.connectiontimeout", timeout);
        props.put("mail.smtp.timeout", timeout);
        props.put("mail.smtp.writetimeout", timeout);
        props.put("mail.smtp.port", Integer.parseInt(brand.getBrandProperties().getEmailPort()));

        Session session = Session.getInstance(props);
        message = new MimeMessage(session);
        createMessage();

        if (brand.getBrandProperties().getEmailUsername().isEmpty() && brand.getBrandProperties().getEmailPassword().isEmpty()) {
            // Send email message to SMTP server without auth
            Transport.send(message);
        } else {
            // Send message with auth
            Transport.send(message,brand.getBrandProperties().getEmailUsername(),brand.getBrandProperties().getEmailPassword());
        }
    } catch (MessagingException e) {
        log.error("Failed to send email message.", e);
        throw e;
    }
}

从javamail文档和源代码来看,传输连接显然是在finally语句上关闭的,所以不应该挂起连接,但我还是碰到了这个异常。

我上网查过了,但我想不出提高这个限额的办法。

我是不是做错了传递信息的事?有办法监控电子邮件连接吗?还是电子邮件服务器的问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-20 18:31:38

您的服务器告诉您,您在太短的时间内建立了太多的连接。它的速度限制了你防止你滥用服务器。您可能需要支付更高质量的服务才能发送更多的消息。有关详细信息,请与ISP联系。

顺便说一下,您说您使用的是javax.mail-api-1.5.2.jar和mail-1.5.0-b01.jar。你不应该混合和匹配这样的版本。您只需要一个jar文件- javax.mail-1.5.2.jar文件。你可以在JavaMail项目页面上找到它。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29171247

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档