Bewährte Methoden - Senden von mehrteiligen E-Mails mit Javamail MIME - und Google Mail

Ich habe eine Tomcat-Anwendung, die Bestätigungs-E-Mails usw. senden muss. Ich habe den E-Mail-Empfänger mit Javamail (mail.jar) codiert, um mehrteilige Text- / HTML-E-Mails zu senden. Ich habe den Code auf Basis der Java EE-Beispiele erstellt. Ich verwende den SMTP-MTA auf dem lokalen Server.

Es funktioniert super In Outlook sehe ich die HTML-Version. Wenn ich es in den Outlook-Spam-Ordner ziehe, wird die Textversion angezeigt. Ich interpretiere das so, als würde es funktionieren.

Wenn ich jedoch die E-Mails in Google Mail anzeige, wird nur die Textversion angezeigt. Ich weiß, dass HTML vorhanden ist (von dort hat Outlook es erhalten). Aber Google Mail zeigt es nicht an ... Ich habe viele E-Mails von anderen Systemen, die in Google Mail als HTML angezeigt werden.

Kann jemand mich auf die Spezifikation verweisen, die zeigt, was ich vermisse? Gibt es spezielle Header, die ich erstellen muss?

Vielen Dank

Code sieht so aus:

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

Antworten auf die Frage(1)

Ihre Antwort auf die Frage