多部分电子邮件

时间:2009-11-12 10:09:26

标签: java html email multipart

如何在多部分电子邮件中使用html标记。当我使用<b>时,它不被识别为粗体标记。

4 个答案:

答案 0 :(得分:11)

啊,你正在使用Java。

请注意,在我看来,您应该始终在HTML电子邮件中设置纯文本替换。

此代码还允许您内嵌图像(使用<img src="cid:foo">从HTML引用,但并非所有电子邮件客户端都支持此功能。

MimeMessage mm = prepareMessage(from, to, subject, cc, bcc);
MimeMultipart mp = new MimeMultipart("alternative");

// Attach Plain Text
MimeBodyPart plain = new MimeBodyPart();
plain.setText(plainText);
mp.addBodyPart(plain);

/*
 * Any attached images for the HTML portion of the email need to be encapsulated with
 * the HTML portion within a 'related' MimeMultipart. Hence we create one of these and
 * set it as a bodypart for the overall message.
 */
MimeMultipart htmlmp = new MimeMultipart("related");
MimeBodyPart htmlbp = new MimeBodyPart();
htmlbp.setContent(htmlmp);
mp.addBodyPart(htmlbp);

// Attach HTML Text
MimeBodyPart html = new MimeBodyPart();
html.setContent(htmlText, "text/html");
htmlmp.addBodyPart(html);

// Attach template images (EmailImage is a simple class that holds image data)
for (EmailImage ei : template.getImages()) {
    MimeBodyPart img = new MimeBodyPart();
    img.setContentID(ei.getFilename());
    img.setFileName(ei.getFilename());
    ByteArrayDataSource bads = new ByteArrayDataSource(ei.getImageData(), ei.getMimeType());
    img.setDataHandler(new DataHandler(bads));
    htmlmp.addBodyPart(img);
}

mm.setContent(mp);

答案 1 :(得分:1)

您是要在电子邮件的那一部分上将内容类型的mime设置为text / html吗?

或者您正在使用Outlook查看 - Outlook的查看器使用Word来呈现HTML,而不是像任何明智的设计那样使用IE渲染引擎。这确实意味着可能会丢失重要的格式。

或者,尝试使用其他字体。一些字体没有定义粗体变体。这是一个很长的镜头,大多数字体渲染技术可以自动加粗非粗体字体。

答案 2 :(得分:1)

您用来发送电子邮件的编程语言。

在任何语言中都应该有一个选项,如“IsBodyHtml”。要进行“真实”检查。像.NET的代码

System.Net.Mail.MailMessage mm = new System.Net.Mail.MailMessage();         mm.IsBodyHtml = true;

因此邮件将以html文本形式显示。

答案 3 :(得分:1)

对这个问题有一个明确的答案有点困难。事情可能无效的原因有很多。这些是您可以检查以尝试隔离问题的一些事项。

是否识别出其他html标签?例如。 <p><a>?如果是,您是否尝试使用<strong>代码而不是<b>

检查电子邮件阅读器中的消息来源。也许'&lt;'或'&gt;'字符已被转义为'&amp; lt;'或'&amp; gt;'在发送之前。

您是否尝试过使用其他阅读器(例如网络邮件或桌面版)查看电子邮件?

尝试使用CSS更改font-weight:

.important-text { font-weight: bold; }

<span class=".important-text">Super important text</span>
相关问题