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类中遇到了这种类型的问题。经过多次调试,我发现该类不是线程安全的。然后我使其线程安全,然后一切正常。