无法使用java邮件将富文本内容类型的邮件发送到Outlook

时间:2016-01-07 14:07:54

标签: java javamail

我使用java mail api向outlook发送邮件。我可以发送纯文本和html内容邮件,但是当我将内容类型设置为text / richtext但我只接收纯文本邮件时。

任何机构都可以建议如何发送富文本邮件吗?这是我试过的:

// the parent or main part if you will
Multipart mainMultipart = new MimeMultipart("related");

// this will hold text and html and tells the client there are 2 versions of the message (html and text). presumably text
// being the alternative to html
Multipart htmlAndTextMultipart = new MimeMultipart("alternative");

// set html
MimeBodyPart htmlBodyPart = new MimeBodyPart();
htmlBodyPart.setContent("Hi", "text/richtext");
htmlAndTextMultipart.addBodyPart(htmlBodyPart);

MimeBodyPart htmlAndTextBodyPart = new MimeBodyPart();
htmlAndTextBodyPart.setContent(htmlAndTextMultipart);
mainMultipart.addBodyPart(htmlAndTextBodyPart);

message.setContent(mainMultipart);

2 个答案:

答案 0 :(得分:1)

您可能会对text/richtexttext/rtf

感到困惑

这些是两种不同的格式,与HTML无关。

答案 1 :(得分:0)

首先 - 尝试添加richtext作为内容,而不是明文:

{\rtf1\ansi\deff0 {\fonttbl {\f0 Courier;}}
{\colortbl;\red0\green0\blue0;\red255\green0\blue0;}
This line is the default color\line
\cf2
\tab This line is red and has a tab before it\line
\cf1
\page This line is the default color and the first line on page 2
}

在代码中它可能看起来像

htmlBodyPart.setContent("{\\rtf1\\ansi\\deff0 {\\fonttbl {\\f0 Courier;}}\r\n" +
"{\\colortbl;\\red0\\green0\\blue0;\\red255\\green0\\blue0;}\r\n" +
"This line is the default color\\line\r\n" +
"\\cf2\r\n" +
"\\tab This line is red and has a tab before it\\line\r\n" +
"\\cf1\r\n" +
"\\page This line is the default color and the first line on page 2\r\n" +
"}", "text/richtext");

然后你可能想要考虑实际提供替代文本 - 所以你可以有两个不同的版本。

最后,使用允许您查看收到消息的MIME源的电子邮件客户端很有帮助 - 就像Mozilla Thunderbird一样。