HTML有时不会显示在电子邮件中

时间:2014-02-22 08:30:01

标签: html email javamail

我写了一个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()设置标题,但这不起作用。

1 个答案:

答案 0 :(得分:1)

我认为问题在于您为每个收件人重复使用相同的MimeMessage对象。每次创建一个新的MimeMessage对象,我怀疑它会更好。