如何撰写多部分MIME混合邮件以在Outlook中正确显示它

时间:2017-06-05 19:26:27

标签: email outlook mime-types mime mime-message

我正在使用java代码撰写电子邮件并将其发送到MS Outlook 365帐户。 该消息的组成如下:

  1. 纯文本部分;
  2. html部分仅包含表格;
  3. 纯文本部分;
  4. 文件附件。
  5. 我希望outlook将1-3部分显示为邮件正文,最后部分显示为附件。相反,它只显示第一部分作为消息本身,并将其余部分作为单独的附件。 我玩过不同的标题,但结果是一样的。它是MS堆栈的一些功能(交换,外观等)还是我做错了什么?

    原始邮件在这里

    Date: Mon, 5 Jun 2017 12:01:47 -0700 (PDT)
    From: no-reply@example.com
    To: consumer@example.com
    Message-ID: <some id>
    Subject: Test email
    MIME-Version: 1.0
    Content-Type: multipart/mixed; boundary="----=_Part_0_2350964.1496689307498"
    
    ------=_Part_0_2350964.1496689307498
    Content-Type: text/plain; charset=us-ascii
    Content-Transfer-Encoding: 7bit
    Content-Disposition: inline
    
    Content before table
    
    ------=_Part_0_2350964.1496689307498
    Content-Type: text/html; charset=us-ascii
    Content-Transfer-Encoding: 7bit
    Content-Disposition: inline
    
    <html><body><table><tr><td>First parameter</td><td>value</td></tr><tr><td>Second row</td><td>42</td></tr></table></body></html>
    ------=_Part_0_2350964.1496689307498
    Content-Type: text/plain; charset=us-ascii
    Content-Transfer-Encoding: 7bit
    Content-Disposition: inline
    
    This content should be placed after table
    
    ------=_Part_0_2350964.1496689307498
    Content-Type: application/octet-stream; 
        name="report.xls"
    Content-Transfer-Encoding: base64
    Content-Disposition: attachment; filename="report.xls"
    
    0M8R4KGxGuEAAAAAAAAAAAAAAAAAAAAAOwADAP7/CQAGAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAA
    <skipped>
    ------=_Part_0_2350964.1496689307498--
    

    因此,我只看到“桌面前的内容”行,两个附件,如“ATT01.html”和“ATT02.txt”以及我的原始附件“report.xls”。

    我在某个论坛上发现了一个相关主题,说自Outlook 2010以来这个问题不应该出现,但我可以在桌面应用和Web应用程序的最新版本中看到它。 将所有内容放在html部分中的变通方法解决方案需要更多工作,因为文本部分是由其他组件生成的。

1 个答案:

答案 0 :(得分:0)

您正在对部件进行错误分组。一定是

1. Outer message, multipart/mixed
  2. multipart/related
    2.a text/plain
    2.b text/html
  3. attachment.