首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mailkit -当收到来自苹果邮件的消息时,没有附件或html正文。

Mailkit -当收到来自苹果邮件的消息时,没有附件或html正文。
EN

Stack Overflow用户
提问于 2015-06-12 10:20:38
回答 1查看 4.3K关注 0票数 1

我一直在使用Mailkit库接收电子邮件,到目前为止,它是伟大的。然而,我们发现了通过Mac上的邮件应用程序发送邮件的问题。例如,我们用pdf附件和html格式的正文发送的消息正在作为一个没有任何附件的对象(例如IMailFolder.GetMessage)被接收,并且只有HtmlBody为null (只接收到TextBody )。

我正在从web电子邮件客户端附加此邮件的源代码(没有一些个人信息标题)(消息显示在那里是ok的)。

代码语言:javascript
复制
Content-Type: multipart/alternative; boundary="Apple-Mail=_CA0BDF81-AE2A-4E1A-9D37-8B30B5220C77"
Subject: Test
Date: Thu, 11 Jun 2015 07:00:29 -0700
Mime-Version: 1.0 (Mac OS X Mail 8.0 \(1990.1\))
X-Mailer: Apple Mail (2.1990.1)


--Apple-Mail=_CA0BDF81-AE2A-4E1A-9D37-8B30B5220C77
Content-Transfer-Encoding: 7bit
Content-Type: text/plain;
    charset=us-ascii


Hello goodbye pdf

--Apple-Mail=_CA0BDF81-AE2A-4E1A-9D37-8B30B5220C77
Content-Type: multipart/mixed;
    boundary="Apple-Mail=_FA44F8C6-5F68-44EF-9537-8E8651DAAC0C"


--Apple-Mail=_FA44F8C6-5F68-44EF-9537-8E8651DAAC0C
Content-Transfer-Encoding: 7bit
Content-Type: text/html;
    charset=us-ascii

<html><head><meta http-equiv="Content-Type" content="text/html charset=us-ascii"></head><body style="word-wrap: break-word;
-webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class=""><br class=""></div><div class=""><b class=""><i class="">Hello</i></b></div><div class=""><b class=""><i class="">goodbye pdf</i></b></div></body></html>
--Apple-Mail=_FA44F8C6-5F68-44EF-9537-8E8651DAAC0C
Content-Disposition: inline;
    filename*=utf-8''Zamo%CC%81wienie%20ZAM21%2D150528%2D01.pdf
Content-Type: application/pdf;
    x-unix-mode=0644;
    name="=?utf-8?Q?Zamo=CC=81wienie_ZAM21-150528-01=2Epdf?="
Content-Transfer-Encoding: base64

(here is a base64-encoded pdf that is being decoded correctly)
--Apple-Mail=_FA44F8C6-5F68-44EF-9537-8E8651DAAC0C
Content-Transfer-Encoding: 7bit
Content-Type: text/html;
    charset=us-ascii

<html><head><meta http-equiv="Content-Type" content="text/html charset=us-ascii"></head><body style="word-wrap: break-word;
-webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""></body></html>
--Apple-Mail=_FA44F8C6-5F68-44EF-9537-8E8651DAAC0C--

--Apple-Mail=_CA0BDF81-AE2A-4E1A-9D37-8B30B5220C77--

有人在Mailkit遇到过这样的问题吗?或者它不依赖于图书馆,只是特定的苹果邮件?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-15 11:50:58

MimeMessage.TextBody和MimeMessage.HtmlBody属性是方便的属性,它们使用常见的实践来确定消息的适当文本主体部分。不幸的是,没有严格定义“这1部分和1部分仅是文本主体,而另1部分是html主体”。

这一信息的结构如下:

代码语言:javascript
复制
multipart/alternative
  text/plain
  multipart/mixed
    text/html
    application/pdf
    text/html

通常,在multipart/alternative中,有以下两种情况中的一种:

代码语言:javascript
复制
multipart/alternative
  text/plain
  text/html

代码语言:javascript
复制
multipart/alternative
  text/plain
  multipart/related
    text/html
    application/pdf

multipart/alternative定义了其他视图(我知道,我在这里说的是显而易见的)。MimeKit查找text/plain部分,因为它遵循一般约定。但下一个选择是multipart/mixed。这不是HTML,所以MimeKit不能将它作为HtmlBody返回。MimeKit确定HtmlBody的逻辑只理解multipart/alternative内部的multipart/related,因为multipart/related规范定义了哪个部分是根文档(通常是一个HTML )。

在您的消息中,这意味着multipart/mixed是您的备用视图,而发送代理将按照顺序作为备用消息体呈现给这三个部分。你不能仅仅选择这两个html部件中的一个,并使用它作为html主体,因为没有另一个(也没有pdf),它将是不完整的。

尽管如此,MimeKit并不限制您使用TextBodyHtmlBody属性来获取消息体。MimeKit提供了许多方法来迭代MIME结构,从而使用自己的逻辑来获得所需的东西。

请参阅下列文件:

常见问题/ MessageBody

处理消息

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30800664

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档