为什么html内容不会显示在带附件的电子邮件中

时间:2014-04-25 08:17:10

标签: java javamail html-email email-attachments

我正在使用JavaMail发送带有html内容和附件的电子邮件。但是,当发送包含html内容和附件的电子邮件时,html内容将显示为纯文本。

我已将Content-Type标题设置为text/html; charset=us-ascii但在我收到的电子邮件中,Content-Type显示为text/plain。为什么会这样?

这是我的代码:

if(f!=null){ // f is an array containing the attachment file objects
                Multipart mp=new MimeMultipart("mixed");
                BodyPart mbody=new MimeBodyPart();
                mbody.setHeader("Content-Type", "text/html; charset=us-ascii");
                mbody.setHeader("Content-Transfer-Encoding","7bit");
                mbody.setText(content);                               
                mp.addBodyPart(mbody);                                        
                for(File file:f){    
                    BodyPart mbody2=new MimeBodyPart();
                    DataSource ds=new FileDataSource(file.getAbsolutePath());
                    mbody2.setDataHandler(new DataHandler(ds));
                    mbody2.setFileName(ds.getName());
                    System.out.println(ds.getName());
                    mbody2.setHeader("Content-Type", "multipart/mixed");
                    mp.addBodyPart(mbody2);                        
                }
                m.setContent(mp);
                //m.setHeader("Content-Type", "multipart/mixed");
                //m.setHeader("Content-Transfer-Encoding","base64");
            }
            else{
                m.setContent(content,"text/html");
                m.setHeader("Content-Type", "text/html; charset=us-ascii");
                m.setHeader("Content-Transfer-Encoding","7bit");
            }
            m.saveChanges();

如果我取消注释m.setHeader("Content-Type", "multipart/mixed");,那么附件会显示为noname而不带扩展名,内容根本不会显示。

如果我发送没有附件的电子邮件,则会正确显示html内容。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我明白了。

需要mbody.setContent(content, "text/html");代替mbody.setText(content);