使用您的示例代码,您正在下载整个消息,因为您正在请求消息的顶级正文部分。
MIME 是“身体部位”的树形结构。您要做的是遍历 ms.First().Body 以找到所需的部分,然后使用 GetBodyPart() 方法单独下载它们。
看看 MailKit.BodyPartMultipart、MailKit.BodyPartMessage、MailKit.BodyPartBasic 和 MailKit.BodyPartText。
BodyPartMultipart 包含其他身体部位。
BodyPartMessage 部分包含一条消息(也将包含一个正文部分)。
BodyPartBasic 是一个基本的叶节点主体部分——通常是一个“附件”。
BodyPartText 是一个文本部分(BodyPartBasic 的子类),它可以是附加的文本部分,也可以是您可能认为是消息的主要文本的部分。
要确定 BodyPartBasic 是内联显示还是作为附件显示,您需要做的是:
if (part.ContentDisposition != null && part.ContentDisposition.IsAttachment)
// it is an attachment
else
// it is meant to be shown to the user as part of the message
// (if it is an image, it is meant to be displayed with the text)
我可能应该在 BodyPartBasic 中添加一个便利属性,IsAttachment
以使其更简单一些(我今天会尝试添加它)。
希望有帮助。
更新:我刚刚在 git master 中添加了 BodyPartBasic.IsAttachment 便利属性,因此 MailKit 的下一个版本将拥有它。