2011-07-20 7 views
14

Từ http://www.oracle.com/technetwork/java/faq-135477.html#sendmpa:Làm cách nào để gửi thư có cả văn bản thuần tuý cũng như văn bản HTML để mỗi trình đọc thư có thể chọn định dạng phù hợp với nó?

Bạn sẽ muốn gửi thông báo đa phần/thay thế MIME. Bạn xây dựng một thông điệp như vậy về bản chất giống như cách bạn tạo một thông báo đa thông điệp/hỗn hợp , sử dụng đối tượng MimeMultipart được xây dựng bằng cách sử dụng MimeMultipart mới ("thay thế"). Sau đó, bạn chèn phần văn bản/đồng bằng phần cơ thể làm phần đầu tiên trong phần nhiều và chèn phần văn bản/html phần cơ thể làm phần thứ hai trong phần nhiều. Bạn cần tự mình cần tự mình xây dựng các phần thuần và html để có nội dung thích hợp . Xem RFC2046 để biết chi tiết về cấu trúc của một thông điệp như vậy.

Ai đó có thể cho tôi biết một số mã mẫu cho điều này không?

+7

OP: có lẽ đã đến lúc đánh dấu câu trả lời đúng chưa? – zacheusz

+0

Đối với ai đó vẫn đang sử dụng StackOverflow, nó sẽ được dự kiến ​​để có thể đánh dấu một câu trả lời như được chấp nhận. –

Trả lời

54

Đây là một phần của mã của riêng tôi:

 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); 

đâu m là một thể hiện của lớp của riêng tôi.

+0

Bạn là một phao cứu sinh, đã dành buổi sáng cố gắng tìm ra lý do tại sao tôi nhận được cả html và văn bản cùng lúc, người thay thế "thay thế" đã sửa nó cho tôi :-D –

+10

Nếu câu trả lời đúng, vui lòng ghi tác giả. – user48956