Как да изпратя поща както с обикновен текст, така и с HTML текст, така че всеки четец на поща да може да избере подходящия за него формат?

От http://www.oracle.com/technetwork/java/faq-135477.html#sendmpa:

Ще искате да изпратите MIME съставено/алтернативно съобщение. Вие изграждате такова съобщение по същество по същия начин, по който изграждате съставно/смесено съобщение, като използвате MimeMultipart обект, конструиран с помощта на new MimeMultipart("алтернатива"). След това вмъквате текст/обикновена основна част като първа част в multpart и вмъквате текст/html основна част като втора част в multipart. Ще трябва сами да конструирате обикновените и html части, за да имате подходящо съдържание. Вижте RFC2046 за подробности относно структурата на такова съобщение.

Може ли някой да ми покаже примерен код за това?


person Tim    schedule 20.07.2011    source източник


Отговори (1)


Това е част от моя собствен код:

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 е екземпляр на моя собствен клас.

person zacheusz    schedule 20.07.2011
comment
Само имайте предвид, че редът, в който textPart и htmlPart се добавят към екземпляра MultiPart, е важен. Ако ги добавите обратното, частта с обикновен текст ще се показва на потребителя дори когато html е наличен (поне в gmail). - person Possible; 07.12.2020