当有很多接收器时,无法发送电子邮件

时间:2012-08-01 09:34:31

标签: java email javamail james

当我向少数人发送电子邮件时,我的电子邮件代码效果很好,但当我发送给所有联系的用户(177)时,我收到此错误:

[ERROR]  - org.apache.commons.mail.EmailException: Sending the email to the following server failed : hlrdwd.com:25

代码如下:

HtmlEmail email = new HtmlEmail();
        email.setCharset("utf-8");
        if (vo.getContent() != null && vo.getContent().trim().length() > 0) {
            email.setHtmlMsg(vo.getContent());
        } else {
            email.setHtmlMsg("   ");
        }
        email.setSubject(vo.getTitle());
        email.setFrom(vo.getSender(), currentuname);
        email.setHostName(Property.getSmtp());
        List<Map<String, String>> toList = mm.formatAddress(vo
                .getReceiver());
        if (toList != null) {
            for (int i = 0; i < toList.size(); i++) {
                Map<String, String> tMap = toList.get(i);
                email.addTo(tMap.get(mm.KEY_EMAIL), tMap.get(mm.KEY_NAME));
                System.out.println(tMap.get(mm.KEY_EMAIL));
            }
        }
        email.setAuthentication(currentuser, password);

        String messageid = email.send();

我谷歌这个并添加email.setTLS(true);,但仍然无法正常工作。等你的帮忙!

1 个答案:

答案 0 :(得分:1)

问题是接收邮件服务器不喜欢同时发送给太多人的邮件。作为参考,默认情况下,后缀拒绝超过50个收件人的邮件。

最简单的解决方案是发送多条消息,而不是一次发送给所有人。在极端情况下,您可以为每个用户发送一条消息 - 然后您可以根据需要自定义消息,这也使他们不太可能被过滤为垃圾邮件。