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

Email 如何编写多部分MIME混合邮件以在Outlook中正确显示,email,outlook,mime-types,mime,mime-message,Email,Outlook,Mime Types,Mime,Mime Message,我正在使用java代码编写电子邮件并将其发送到MS Outlook 365帐户。 该消息的组成如下: 纯文本部分 仅包含表的html部分 纯文本部分 文件附件 我希望outlook将第1-3部分显示为邮件正文,最后一部分显示为附件。相反,它只将第一部分显示为消息本身,并将其余部分作为单独的附件。 我踢过不同的头球,但结果是一样的。是MS stack的某些功能(exchange、outlook等)还是我做错了什么 原始信息在这里 Date: Mon, 5 Jun 2017 12:01:47 -07

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

  • 纯文本部分
  • 仅包含表的html部分
  • 纯文本部分
  • 文件附件
  • 我希望outlook将第1-3部分显示为邮件正文,最后一部分显示为附件。相反,它只将第一部分显示为消息本身,并将其余部分作为单独的附件。 我踢过不同的头球,但结果是一样的。是MS stack的某些功能(exchange、outlook等)还是我做错了什么

    原始信息在这里

    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--
    
    日期:2017年6月5日星期一12:01:47-0700(PDT)
    发件人:没有-reply@example.com
    致:consumer@example.com
    消息ID:
    主题:测试电子邮件
    MIME版本:1.0
    内容类型:多部分/混合;boundary=“---=\u Part\u 0\u 2350964.1496689307498”
    ------=_零件_0_2350964.149668930798
    内容类型:文本/纯文本;字符集=美国ascii码
    内容传输编码:7bit
    内容配置:内联
    表前内容
    ------=_零件_0_2350964.149668930798
    内容类型:text/html;字符集=美国ascii码
    内容传输编码:7bit
    内容配置:内联
    第一个参数值第二行42
    ------=_零件_0_2350964.149668930798
    内容类型:文本/纯文本;字符集=美国ascii码
    内容传输编码:7bit
    内容配置:内联
    此内容应放在表格后面
    ------=_零件_0_2350964.149668930798
    内容类型:应用程序/八位字节流;
    name=“report.xls”
    内容传输编码:base64
    内容处置:附件;filename=“report.xls”
    0M8R4KGxGueaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
    ------=_零件_0_2350964.149668930798--
    
    因此,我只看到“表前内容”行,两个附件,如“ATT01.html”和“ATT02.txt”,以及我的原始附件“report.xls”

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

    您对这些部分的分组不正确。一定是

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