El siguiente programa muestra un valor de retorno inesperado para el tipo de mime multiparte HTML. ¿Por qué este programa imprime "text/plain" y no "text/html"?Cómo configurar MimeBodyPart ContentType en "text/html"?
public class Main {
public static void main(String[] args) throws javax.mail.MessagingException, java.io.IOException {
javax.mail.internet.MimeBodyPart mime_body_part = new javax.mail.internet.MimeBodyPart();
mime_body_part.setContent("<h1>foo</h1>", "text/html");
System.out.println(mime_body_part.getContentType());
}
}
me han tratado numerosas formas alternativas que incluyen el establecimiento de un ByteArrayDataSource envuelto en una DataHandler, pero fue en vano. Lo mismo sucede cuando pruebo esto con un MimeMessage en lugar de un MimeBodyPart.
Para compilar y ejecutar en Linux:
javac -classpath .:activation.jar:mail.jar Main.java
java -classpath .:activation.jar:mail.jar Main
actualización: esto funcionó bien para mi programa de prueba pero en mi código real no fue así. la diferencia era que el código real era obtener un objeto MimeMessage creado por el sistema de correo, luego actualizar una parte y luego llamar a MimeMessage.saveChanges(). esto todavía no cambiaba el tipo mimet (aunque el contenido se cambió incluso antes de llamar a .saveChanges()). SOLUCIÓN: Creé un nuevo objeto MimeMessage (old_mime_message) del anterior, cambié el contenido y escribí el código, luego llamé .saveChanges() y funcionó bien para mí. – necromancer
MimeMessage.saveChanges() era la magia que necesitaba para pasar nuestras pruebas junit. –