电子邮件接收为原始HTML

时间:2015-01-22 08:17:31

标签: java html email velocity sendgrid

我通过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电子邮件只显示几次,而不是所有时间。

提前致谢。

1 个答案:

答案 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);