mensaje - ¿Por qué este correo de Java llega como texto sin formato en lugar de html en el destinatario?
los correos me llegan sin formato (2)
Tengo este código para enviar un correo electrónico:
public static void sendHtmlTextWithPlainTextAlternative(final String to,
final String from, final String subject, final String plainText,
final String htmlText) throws MessagingException {
final HtmlEmail email = new HtmlEmail();
email.setHostName(SMTP);
try {
email.addTo(getStringAddresses(to));
email.setFrom(from);
email.setSubject(subject);
email.setHtmlMsg("<html><head></head><body><p>Hello World!</p></body></html>");
email.setTextMsg("Hello World!");
email.send();
} catch (final EmailException e) {
e.printStackTrace();
}
}
private static String[] getStringAddresses(final String to) {
return to.split(" |,|;|//r?//n|//r");
}
Pero todo lo que obtengo en mi cliente de correo electrónico (Outlook 2010) es un mensaje de texto sin formato donde puedo ver el marcado HTML y el texto plano alternativo o un mensaje de texto enriquecido que está en blanco (Outlook 2002).
Aquí hay un extracto
------=_Part_0_756354128.1364993577885
Content-Type: multipart/alternative; boundary="----=_Part_1_48519531.1364993577890"
------=_Part_1_48519531.1364993577890
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Hello World!
------=_Part_1_48519531.1364993577890
Content-Type: text/html; charset=us-ascii
Content-Transfer-Encoding: 7bit
<html><head></head><body><p>Hello World!</p></body></html>
------=_Part_1_48519531.1364993577890--
------=_Part_0_756354128.1364993577885--
Según un administrador de Exchange Server, el mensaje debería contener algo como esto al principio
0 2.1.5 Recipient OK
DATA
354 Start mail input; end with <CRLF>.<CRLF>
Content-Type: multipart/mixed; boundary="----=_Part_1_933059347.1364987366297"
Pero llega así (extracto):
250 2.1.5 Recipient OK
DATA
354 Start mail input; end with <CRLF>.<CRLF>
This is the content preamble.
------=_Part_1_933059347.1364987366297
Content-Type: multipart/alternative; boundary="----=_Part_0_1905186593.1364987366295"
El correo electrónico llega con un asunto vacío y una lista de destinatarios vacía. ¿Qué podría causar este extraño comportamiento?
Veo que estás usando Apache commons?
Intente quitar la etiqueta de cabeza y cuerpo
Entonces tendras
email.setHtmlMsg("<html><p>Hello World!</p></html>");
Otra cosa que no debería hacer la diferencia, pero puede intentarlo es establecer la valur correcta para email.setHostName ("mail.myserver.com");
Guía del usuario de Ref commons eml
Y envíe el correo a una cuenta de Gmail, ¿tal vez el servidor tiene una configuración para permitir solo el texto y la eliminación de html? ¿Puedes enviar el mismo id. De correo html desde gmail (formato enriquecido)?
Después de descubrir qué buscar, la solución fue bastante simple y debo agradecer a Cedric Champeau. Fue un conflicto con geronimo-javamail que fue arrastrado a través de otra dependencia maven. Todo lo que tenía que hacer era excluir esa dependencia: Apache CXF + Maven + Javamail + Log4J (actualización)