Mam aplikację Tomcat, która musi wysyłać wiadomości e-mail z potwierdzeniami itp. Mam kodowany program pocztowy z Javamail (mail.jar), aby wysyłać wieloczęściowe wiadomości tekstowe/html. Oparłem kod na przykładach Java EE. Używam MTA SMTP na lokalnym serwerze.Sprawdzone metody - Wysyłanie wiadomości e-mail wieloskładnikowych javamail mime - i Gmail
Działa świetnie. W Outlooku widzę wersję HTML. Jeśli przeciągnę go do folderu spamu programu Outlook, widzę wersję tekstową. Więc interpretuję to jako mówiąc, że to działa.
Jednak jeśli przeglądam wiadomości e-mail w Gmailu, widzę tylko wersję tekstową. Wiem, że kod HTML tam jest (stąd Outlook dostał go). Ale Gmail tego nie pokazuje ... Mam wiele e-maili z innych systemów, które wyświetlają się jako HTML w Gmailu.
Czy ktoś może wskazać mi specyfikację, która pokazuje, czego mi brakuje? Czy muszę utworzyć specjalne nagłówki?
Dzięki
kod wygląda następująco:
Message message = new MimeMessage(session);
Multipart multiPart = new MimeMultipart("alternative");
try {
MimeBodyPart textPart = new MimeBodyPart();
textPart.setText(text, "utf-8");
MimeBodyPart htmlPart = new MimeBodyPart();
htmlPart.setContent(html, "text/html; charset=utf-8");
multiPart.addBodyPart(htmlPart);
multiPart.addBodyPart(textPart);
message.setContent(multiPart);
if(from != null){
message.setFrom(new InternetAddress(from));
}else
message.setFrom();
if(replyto != null)
message.setReplyTo(new InternetAddress[]{new InternetAddress(replyto)});
else
message.setReplyTo(new InternetAddress[]{new InternetAddress(from)});
InternetAddress[] toAddresses = { new InternetAddress(to) };
message.setRecipients(Message.RecipientType.TO, toAddresses);
message.setSubject(subject);
message.setSentDate(new Date());
Transport.send(message);
} catch (AddressException e) {
e.printStackTrace();
System.out.println("Error: "+e.getMessage());
} catch (MessagingException e) {
e.printStackTrace();
System.out.println("Error: "+e.getMessage());
} finally {
System.out.println("Email sent!");
}
Twój kod wygląda dobrze. Gmail może celowo wyświetlać wersję tekstową, aby uniknąć problemów z bezpiecznym renderowaniem treści HTML. Mając wybór, może preferować zwykły tekst. –