我有这段代码发送电子邮件:
public static void sendHtmlTextWithPlainTextAlternative(final String to,
final String from, final String subject, final String plainText,
final String htmlText) throws MessagingException {
final HtmlEmail email = new HtmlEmail();
email.setHostName(SMTP);
try {
email.addTo(getStringAddresses(to));
email.setFrom(from);
email.setSubject(subject);
email.setHtmlMsg("<html><head></head><body><p>Hello World!</p></body></html>");
email.setTextMsg("Hello World!");
email.send();
} catch (final EmailException e) {
e.printStackTrace();
}
}
private static String[] getStringAddresses(final String to) {
return to.split(" |,|;|\\r?\\n|\\r");
}
但是我在我的电子邮件客户端(Outlook 2010)中的所有内容都是纯文本消息,我可以在其中看到html标记和替代纯文本或空白的富文本消息(Outlook 2002)。
这是一段摘录
------=_Part_0_756354128.1364993577885
Content-Type: multipart/alternative; boundary="----=_Part_1_48519531.1364993577890"
------=_Part_1_48519531.1364993577890
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Hello World!
------=_Part_1_48519531.1364993577890
Content-Type: text/html; charset=us-ascii
Content-Transfer-Encoding: 7bit
<html><head></head><body><p>Hello World!</p></body></html>
------=_Part_1_48519531.1364993577890--
------=_Part_0_756354128.1364993577885--
根据一个Exchange Server管理员的说法,消息应该在开头包含类似的内容
0 2.1.5 Recipient OK
DATA
354 Start mail input; end with <CRLF>.<CRLF>
Content-Type: multipart/mixed; boundary="----=_Part_1_933059347.1364987366297"
但它就像这样(摘录):
250 2.1.5 Recipient OK
DATA
354 Start mail input; end with <CRLF>.<CRLF>
This is the content preamble.
------=_Part_1_933059347.1364987366297
Content-Type: multipart/alternative; boundary="----=_Part_0_1905186593.1364987366295"
电子邮件到达的主题为空,收件人列表为空。 什么可能导致这种奇怪的行为?
答案 0 :(得分:1)
在找到解决方案后,解决方案非常简单,我要感谢Cedric Champeau。这与通过另一个maven依赖项引入的geronimo-javamail发生冲突。我所要做的就是排除这种依赖:Apache CXF + Maven + Javamail + Log4J (update)
答案 1 :(得分:0)
我看到你使用apache公共资源?
尝试删除头部和身体标记
所以你会有
email.setHtmlMsg("<html><p>Hello World!</p></html>");
另一件不应该有所作为,但你可以尝试的是设置正确的值 email.setHostName( “mail.myserver.com”);
并将邮件发送到Gmail帐户,也许服务器的设置只允许文本及其删除html?你能从gmail(丰富的格式化)发送相同的邮件ID html吗?