我有一個需要發送確認電子郵件等的Tomcat應用程序。我用Javamail編寫了電子郵件(mail.jar)發送多部分文本/ html電子郵件。我基於Java EE示例上的代碼。我在本地服務器上使用SMTP MTA。最佳實踐 - 發送javamail mime multipart電子郵件 - 和gmail
它很好用。在Outlook中,我看到了HTML版本。如果我將它拖入Outlook垃圾郵件文件夾,我會看到文本版本。所以我解釋說,它說的是有效的。
但是,如果我在Gmail中查看電子郵件,則只能看到文本版本。我知道HTML就在那裏(這是Outlook從中得到的地方)。但Gmail沒有顯示它......我有很多來自其他系統的電子郵件,它們在Gmail中顯示爲HTML。
任何人都可以指向我顯示我失蹤的規格嗎?是否有我需要創建的特殊標題?
感謝
代碼如下所示:
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!");
}
你的代碼看起來不錯。 Gmail可能會故意顯示純文本版本,以避免安全呈現html內容時出現的所有問題。給出一個選擇,它可能更喜歡純文本。 –