java - 为什么此 java 邮件以纯文本而不是 html 形式到达收件人?

标签 java email smtp mime-types apache-commons

我有发送电子邮件的代码:

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"

收到的电子邮件主题和收件人列表都是空的。 是什么导致了这种奇怪的行为?

最佳答案

在找出要查找的内容之后,解决方案非常简单,我必须感谢 Cedric Champeau。这是与通过另一个 Maven 依赖引入的 geronimo-javamail 的冲突。我所要做的就是排除这种依赖:Apache CXF + Maven + Javamail + Log4J (update)

关于java - 为什么此 java 邮件以纯文本而不是 html 形式到达收件人?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15786239/

相关文章:

java - 自定义 JSON 来填充数据表

spring - 无法创建配置,因为找不到 Bean 验证提供程序。将像 Hibernate Validator (RI) 这样的提供程序添加到您的类路径中

http - 使用http协议(protocol)发送电子邮件?

java - 从本地主机发送电子邮件 - Play Framework

c# - 在 C# 中通过 Google Apps 发送电子邮件

java - Talend 在 tTikaExtractor 上迭代

java - 如何轮流监听两组线程获取synchronized section?

Java PrintWriter 写入将数据设置为.txt

java - 身份验证失败异常 - 在批量邮件发送代码中

python - Django 通过 smtp.gmail.com 发送电子邮件时遇到问题