Java 通过commons-email-1.3.2发送邮件

Java 通过commons-email-1.3.2发送邮件,java,arraylist,sendmail,Java,Arraylist,Sendmail,我再次发送ArrayList邮件时遇到问题。项目建设和工作成功约1个月。但是今天我发现一些重要的邮件不是来自我的程序。我开始调试我的代码。让我分享我的发现 我从一些数据库查询中填充了一个Arraylist ArrayList<String> importantlist = new ArrayList<String>(); sendMail方法 public void sendMail(ArrayList cominglist) throws Exception {

我再次发送
ArrayList
邮件时遇到问题。项目建设和工作成功约1个月。但是今天我发现一些重要的邮件不是来自我的程序。我开始调试我的代码。让我分享我的发现

我从一些数据库查询中填充了一个
Arraylist

ArrayList<String> importantlist = new ArrayList<String>();
sendMail方法

public void sendMail(ArrayList cominglist) throws Exception {
    StringBuilder b = new StringBuilder();
    for(Object coming: cominglist)
        b.append(coming).append("\n");     
    String cominglistString = b.toString(); 
    Email email = new SimpleEmail();
    email.setHostName("hostname here");
    email.setSmtpPort(587);
    email.setAuthentication("mail sender user here","userpasswordhere");
    email.setSSLOnConnect(false);
    email.setFrom("mail sender address here");
    email.setSubject("Example important list");
    email.setMsg("Example important List body;\n"+cominglistString);
    email.addTo("receiver user here");
    email.addTo("receiver user here");
    email.send();
    System.out.println("success");
} 
当我调试这个方法时,当光标指向email.send()时,我看到消息是
null
但该程序工作成功,并在大约1个月内向用户发送列表

如果我像下面一样尝试另一种sendMail方法,邮件会成功地到达我的邮箱

public void sendMail2() throws Exception {
    Email email = new SimpleEmail();
    email.setHostName("hostname here");
    email.setSmtpPort(587);
    email.setAuthentication("mail sender user here","userpasswordhere");
    email.setSSLOnConnect(false);
    email.setFrom("mail sender address here");
    email.setSubject("Example simple mail");
    email.setMsg("Example simple mail body;\n");
    email.addTo("receiver user here");
    email.addTo("receiver user here");
    email.send();
    System.out.println("success");
} 
---编辑---

email.setMsg("Example important List body;\n"+cominglistString); line edited.
是的,我的列表肯定大于0

有什么想法吗

---编辑2---

email.setMsg("Example important List body;\n"+cominglistString); line edited.

真的我现在很震惊!!我继续调试,这次调试时邮件会到达我的邮箱。因为我看到这次填充了
cominglistString
email
消息框。邮件有时不来。我被卡住了:(

问题已解决。这是本地防火墙问题。防火墙阻止应用程序计算机和邮件服务器之间的通信

防火墙重新启动,问题消失


谢谢大家的回答。

cominglistString的值是多少?它是否如您预期的那样,即有效字符串?1个示例行是:[12134 OUT MEMBER][Für_Sec:1613][Füs_Sec:5673][%245 Command Für]您正在使用线程发送邮件吗?如果SimpleEmail类不是线程安全的,则在执行线程时可能会发生这种情况。@ManishVerma上面的邮件发送条件存储在SwingWorker的doInBackground方法中。以及在主SwingWorker类下定义的sendMail方法。这会导致问题吗?嘿,我对SwingWorker类不太了解。无论如何,您可以这样做在java版本中观察它的线程安全问题和复杂性。我在SimpleDataFormat类中遇到了这种类型的问题。经过多次调试,我发现该类不是线程安全的。然后我使其线程安全,然后一切正常。