【问题标题】:Multipart email message多部分电子邮件
【发布时间】:2009-11-12 10:09:25
【问题描述】:

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

【问题讨论】:

    标签: java html email multipart


    【解决方案1】:

    啊,你使用的是 Java。

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

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

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

    【讨论】:

      【解决方案2】:

      您在电子邮件的那部分将 Content-type mime 设置为 text/html?

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

      或者,尝试不同的字体。一些字体没有定义粗体变体。虽然这是一个很长的尝试,但大多数字体渲染技术都可以自动加粗非粗体字体。

      【讨论】:

        【解决方案3】:

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

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

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

        所以邮件将作为 html 文本发送。

        【讨论】:

          【解决方案4】:

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

          是否可以识别其他 html 标签?例如。 <p>, <a>?如果是这样,您是否尝试过使用<strong> 标签而不是<b>?

          在电子邮件阅读器中检查消息来源。 '' 字符可能已转义为 '<'或'>'在发送之前。

          您是否尝试过在不同的阅读器中查看电子邮件,例如基于网络邮件或桌面的阅读器?

          尝试使用 CSS 更改字体粗细:

          .important-text { font-weight: bold; }
          
          <span class=".important-text">Super important text</span>
          

          【讨论】:

            猜你喜欢
            • 2017-03-19
            • 2013-07-13
            • 2019-05-06
            • 2021-01-11
            • 2012-08-13
            • 2018-05-16
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多