Najlepsze praktyki - Wysyłanie javamail mime wieloczęściowych e-maili - i gmail

Mam aplikację Tomcat, która musi wysyłać wiadomości e-mail z potwierdzeniem itp. Zakodowałem program pocztowy za pomocą Javamail (mail.jar), aby wysyłać wieloczęściowe wiadomości tekstowe / HTML. Kod oparłem na przykładach Java EE. Używam SMTP MTA na lokalnym serwerze.

To działa świetnie. W programie Outlook widzę wersję HTML. Jeśli przeciągnę go do folderu spamu Outlook, zobaczę wersję tekstową. Dlatego interpretuję to jako stwierdzenie, że to działa.

Jeśli jednak przeglądam wiadomości e-mail w Gmailu, widzę tylko wersję tekstową. Wiem, że HTML jest tam (skąd Outlook go otrzymał). Ale Gmail tego nie pokazuje ... Mam wiele wiadomości e-mail z innych systemów, które są wyświetlane w Gmailu jako HTML.

Czy ktoś może wskazać mi specyfikację, która pokazuje, czego brakuje? Czy są jakieś specjalne nagłówki, które muszę utworzyć?

Dzięki

Kod wygląda tak:

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!");
}

questionAnswers(1)

yourAnswerToTheQuestion