props mail enviar correo autenticar archivo adjunto java tomcat smtp javamail html-email

enviar - Mejores prácticas: envío de correos electrónicos multiparte de javamail mime y gmail



javamail props (1)

Resuelto Parece que según la especificación MIME multiparte, el orden de las partes es importante. Deben agregarse en orden de baja fidelidad a alta fidelidad. Entonces parece que GMail sigue la especificación y usa la última parte. En mi caso, los tenía HTML, Text. Acabo de cambiar el orden a Texto, HTML y Gmail lo renderiza correctamente ...

es decir

MimeBodyPart textPart = new MimeBodyPart(); textPart.setText(text, "utf-8"); MimeBodyPart htmlPart = new MimeBodyPart(); htmlPart.setContent(html, "text/html; charset=utf-8"); multiPart.addBodyPart(textPart); // <-- first multiPart.addBodyPart(htmlPart); // <-- second message.setContent(multiPart);

¡Gracias por la ayuda!

Tengo una aplicación Tomcat que necesita enviar correos electrónicos de confirmación, etc. He codificado el emailer con Javamail (mail.jar) para enviar mensajes de texto de múltiples partes / html. Basé el código en los ejemplos de Java EE. Estoy usando SMTP MTA 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. Entonces lo interpreto como diciendo que funciona.

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

¿Alguien puede indicarme las especificaciones que muestran 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!"); }