我写了一个java代码来发送HTML电子邮件。当我立即将电子邮件发送给一组收件人时,电子邮件将按原样显示。这是相同的代码:
String content="<html><p><h1>This is my first java mail with an image but there is a difference.</h1></p><p><img src=\"http://***/ImageLoader2.php\"></p></html>";
m.setSubject(subject);
m.setContent(content,"text/html");
InternetAddress[] toAdd=new InternetAddress[to.length];
for(int i=0;i<to.length;i++)
toAdd[i]=new InternetAddress(to[i]);
for (InternetAddress toAdd1 : toAdd)
m.addRecipient(Message.RecipientType.TO, toAdd1);
Transport t=s.getTransport("smtp");
t.connect(host, user, pass);
t.sendMessage(m, m.getAllRecipients());
System.out.println("MESAAGES SENT");
t.close();
这是输出:
first http://i58.tinypic.com/33ejtvq.png 现在这是我单独发送电子邮件的代码:
m.setSubject(subject);
Transport t=s.getTransport("smtp");
t.connect(host, user, pass);
for(int i=0;i<to.length;i++){
content="<html><p><h1>This is my first java mail with an image but there is a difference.</h1></p><p><img src=\"http://***/ImageLoader2.php?uid="+to[i]+"\"></p></html>";
InternetAddress toAdd=new InternetAddress(to[i]);
m.setRecipient(Message.RecipientType.TO, toAdd);
m.setContent(content,"text/html");
t.sendMessage(m, m.getAllRecipients());
}
System.out.println("MESAAGES SENT");
t.close();
}
这是此代码的输出:
second http://i60.tinypic.com/21b7nz8.png 为什么会这样?我知道css经常打破网络邮件系统,但我没有使用任何。谷歌也没有任何帮助。
由于
修改
在损坏的邮件中,标题中缺少这些字段:
Content-Type: text/html; charset=us-ascii
Content-Transfer-Encoding: 7bit
除此之外,没有其他显着差异。
修改
我也尝试使用m.setHeader()
设置标题,但这不起作用。
答案 0 :(得分:1)
我认为问题在于您为每个收件人重复使用相同的MimeMessage对象。每次创建一个新的MimeMessage对象,我怀疑它会更好。