3

メールを送信するためのこのコードがあります:

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"

件名と受信者リストが空の電子メールが届きます。この奇妙な動作の原因は何ですか?

4

2 に答える 2

1

何を探すべきかを見つけた後、解決策は非常に簡単でした。Cedric Champeau に感謝しなければなりません。これは、別の Maven 依存関係を介して取り込まれた geronimo-javamail との競合でした。私がしなければならなかったのは、その依存関係を除外することだけでした: Apache CXF + Maven + Javamail + Log4J (更新)

于 2013-04-04T07:07:08.787 に答える
0

Apache Commons を使用しているのがわかりますか?

頭と体のタグを削除してみてください

だからあなたは持っているでしょう

    email.setHtmlMsg("<html><p>Hello World!</p></html>");

違いはありませんが、試すことができるもう1つのことは、 email.setHostName("mail.myserver.com"); に正しい値を設定することです。

Ref commons eml ユーザーガイド

メールをGmailアカウントに送信します。おそらく、サーバーにはテキストのみを許可し、HTMLを削除する設定がありますか? gmail (リッチフォーマット) から同じメール ID html を送信できますか?

于 2013-04-03T13:29:52.207 に答える