Prácticas recomendadas: envío de mensajes de correo electrónico con varias partes de javamail mime y gmail

Tengo una aplicación Tomcat que necesita enviar correos electrónicos de confirmación, etc. He codificado el correo electrónico con Javamail (mail.jar) para enviar correos electrónicos de texto / html de varias partes. Basé el código en los ejemplos de Java EE. Estoy usando el MTP SMTP en el servidor local.

Funciona muy bien En Outlook, veo la versión HTML. Si lo arrastro a la carpeta de spam de Outlook, veo la versión de texto. Así que interpreto que decir que funciona.

Sin embargo, si veo los correos electrónicos en Gmail, solo veo la versión de texto. Sé que el HTML está ahí (de ahí proviene Outlook). Pero Gmail no lo muestra ... Tengo muchos correos electrónicos de otros sistemas que se muestran como HTML en Gmail.

¿Alguien puede indicarme la especificación que muestra lo que me estoy perdiendo? ¿Hay encabezados especiales que necesito crear?

Gracias

El código se ve así:

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

Respuestas a la pregunta(1)

Su respuesta a la pregunta