我通过sendgrid SMTPAuthenticator发送的电子邮件正在传递并显示为原始html。我在java中使用电子邮件消息内容的速度模板。
我应该如何在电子邮件中使用正确的html格式而不是原始HTML?
这是代码:
Properties props = new Properties();
props.put("mail.transport.protocol", "smtp");
props.put("mail.smtp.host", SMTP_HOST_NAME);
props.put("mail.smtp.port", 587);
props.put("mail.smtp.auth", "true");
SMTPAuthenticator auth = new SMTPAuthenticator();
Session mailSession = Session.getDefaultInstance(props, auth);
mailSession.setDebug(true);
Transport transport = mailSession.getTransport();
MimeMessage message = new MimeMessage(mailSession);
String text = messageContent;
message.setFrom(new InternetAddress(sendFrom));
message.setSubject(subject);
message.addRecipient(Message.RecipientType.TO, new InternetAddress(sendTo));
message.setContent(text, "text/html; charset=utf-8");
transport.connect();
transport.sendMessage(message,
message.getRecipients(Message.RecipientType.TO));
transport.close();
我还在head元素中的vm文件中添加了mime类型,下面是示例。
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
注意:原始html电子邮件只显示几次,而不是所有时间。
提前致谢。
答案 0 :(得分:1)
我相信你还应该定义你的Mime Body部分,并将你的text
变量初始化为MimeBodyPart()
个对象。虽然我强烈建议您构建一个多部分消息,同时发送text / plain部分以及text / html部分。这是ISP在电子邮件中寻找的常见问题,因为无法呈现html
的电子邮件客户端仍然存在。
Multipart multipart = new MimeMultipart("alternative");
BodyPart textPart = new MimeBodyPart();
textPart.setContent(
"Everything is awesome",
"text/plain; charset=utf-8");
BodyPart htmlPart = new MimeBodyPart();
htmlPart.setContent(
"<p> Everything is awesome! </p>",
"text/html;charset=utf-8");
multipart.addBodyPart(textPart);
multipart.addBodyPart(htmlPart);
message.setContent(multipart);