Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 收件人多时无法发送电子邮件_Java_Email_Jakarta Mail_James - Fatal编程技术网

Java 收件人多时无法发送电子邮件

Java 收件人多时无法发送电子邮件,java,email,jakarta-mail,james,Java,Email,Jakarta Mail,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")

当我只向少数人发送电子邮件时,我的电子邮件代码运行良好,但当我向所有联系人(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();
HtmlEmail=newhtmlemail();
电子邮件.setCharset(“utf-8”);
如果(vo.getContent()!=null&&vo.getContent().trim().length()>0){
email.setHtmlMsg(vo.getContent());
}否则{
email.setHtmlMsg(“”);
}
email.setSubject(vo.getTitle());
email.setFrom(vo.getSender(),currentuname);
email.setHostName(Property.getSmtp());
列表toList=mm.格式地址(vo
.getReceiver());
if(toList!=null){
对于(int i=0;i

我用谷歌搜索并添加
email.settles(true),但仍然无法工作。等待你的帮助

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


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

“--也使它们不太可能被过滤为垃圾邮件”--或者更可能,或者同样可能,视情况而定。没有“一刀切”的垃圾邮件过滤器,或者垃圾邮件发送者已经开始这么做了。@tripleee:我特别考虑了定制:我建议这将是一个罕见的垃圾邮件引擎,它可以标记邮件,以便正确设置收件人的标题并将收件人的姓名放入正文中。对于垃圾邮件发送者来说,这并不比一般的PHP新手更难。这里没有统计数据,但可以猜测,我的垃圾邮件中有10%到30%的地址在to:标题中。(对垃圾邮件发送者来说,实名可能更难。)如果你有一个僵尸网络,个性化的垃圾邮件实际上可能比广泛的Bcc:ed邮件(僵尸的ISP更难区分正常的合法流量)工作得更好。谢谢。你介意告诉我如何一次发送180个接收者的多条信息吗?如果我发送了4条消息,每个少于50个用户,则返回4条消息ID,这是不可接受的。如果多条消息不可接受,则无法使用当前约束解决此问题。可能会转移到另一个限制更高的邮件提供商(但希望他们在幕后将其分解成更小的邮件块)。