2011-07-20 47 views
14

http://www.oracle.com/technetwork/java/faq-135477.html#sendmpa如何使用純文本以及HTML文本發送郵件,以便每個郵件閱讀器都可以選擇適合它的格式?

你要發送一個MIME multipart/alternative的消息。您使用新MimeMultipart(「替代」)構造了一個使用構造爲 的MimeMultipart對象的基本上與構造一個 多部分/混合消息相同的消息。然後插入文本/原始部分作爲多部分的第一部分,然後插入文本/ html 正文部分作爲多部分中的第二部分。您需要 構建純文本和html部分,以便自己擁有合適的 內容。有關這種消息的結構的詳細信息,請參閱RFC2046。

有人可以告訴我一些示例代碼嗎?

+7

OP:也許現在是標記正確答案的時候了? – zacheusz

+0

對於仍在使用StackOverflow的用戶,預計可以將答案標記爲已接受。 –

回答

54

這是我自己的代碼的一部分:

 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是我自己的類的實例。

+0

你是一個救星,早上想弄清楚爲什麼我同時得到html和文本,「替代」參數爲我修正:-D –

+10

如果這是正確的答案,作者。 – user48956

相關問題