0

当我只向几个人发送电子邮件时,我的电子邮件代码运行良好,但是当我发送给所有联系的用户(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);,但仍然无法工作。等待您的帮助!

4

1 回答 1

1

问题是接收邮件服务器不喜欢同时向太多人发送消息。作为参考,postfix 默认拒绝超过 50 个收件人的邮件。

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

于 2012-08-01T09:41:48.840 回答