web-dev-qa-db-ja.com

各メールリーダーが適切な形式を選択できるように、プレーンテキストとHTMLテキストの両方でメールを送信するにはどうすればよいですか?

から http://www.Oracle.com/technetwork/Java/faq-135477.html#sendmpa

MIMEマルチパート/代替メッセージを送信することをお勧めします。このようなメッセージは、新しいMimeMultipart( "alternative")を使用して作成されたMimeMultipartオブジェクトを使用して、マルチパート/混合メッセージを作成するのと基本的に同じ方法で作成します。次に、テキスト/プレーンの本文部分をマルチパートの最初の部分として挿入し、テキスト/ htmlの本文部分をマルチパートの2番目の部分として挿入します。適切なコンテンツを作成するには、プレーンパーツとhtmlパーツを自分で作成する必要があります。このようなメッセージの構造の詳細については、RFC2046を参照してください。

誰かが私にこれのサンプルコードを見せてもらえますか?

19
Tim

これは私自身のコードの一部です:

        final Message msg = new MimeMessage(session);
        msg.setFrom(new InternetAddress(senderAddress, senderDisplayName));
        msg.addRecipient(Message.RecipientType.TO,
                new InternetAddress(m.getRecipient(), m.getRecipientDisplayName()));
        msg.setSubject(m.getSubject());
        // Unformatted text version
        final MimeBodyPart textPart = new MimeBodyPart();
        textPart.setContent(m.getText(), "text/plain"); 
        // HTML version
        final MimeBodyPart htmlPart = new MimeBodyPart();
        htmlPart.setContent(m.getHtml(), "text/html");
        // Create the Multipart.  Add BodyParts to it.
        final Multipart mp = new MimeMultipart("alternative");
        mp.addBodyPart(textPart);
        mp.addBodyPart(htmlPart);
        // Set Multipart as the message's content
        msg.setContent(mp);
        LOGGER.log(Level.FINEST, "Sending email {0}", m);
        Transport.send(msg);

ここで、mは私自身のクラスのインスタンスです。

66
zacheusz