grm*_*hel 4 c# mailkit mimekit
当我使用MailKit通过IMAP协议收到来自Exchange的邮件时,它缺少附件.当我做:
string.Format("Mail has {0} attachments", mime.Attachments.Count())
Run Code Online (Sandbox Code Playgroud)
它报告"0",即使邮件本身包含附件(如果我在Outlook客户端中打开它,我会看到附件),当我激活IMAP协议日志记录时,显然它包含一个附件:
S: X-MS-Has-Attach: yes
...
S: Content-Type: message/rfc822
S: Content-Disposition: attachment;
S: creation-date="Thu, 07 Jan 2016 09:16:53 GMT";
S: modification-date="Thu, 07 Jan 2016 09:16:53 GMT"
...
S: X-MS-Has-Attach:
...
Run Code Online (Sandbox Code Playgroud)
有趣的是附件部分中的"S:X-MS-Has-Attach:"标题,位于服务器的同一个包中.
这是一个已知的问题,我该如何修复它以便在这些情况下我不会错过附件?它似乎只发生在一些邮件上并随机发生.
使用:MailKit 1.0.14.0 MimeKit 1.0.13.0
我发现有新的更新,但如果不能解决问题,我不会真正更新.
在您正在使用的MimeKit版本中,MimeMessage.Attachments是IEnumerable<MimePart>,但是消息/ rfc822部分由MessagePart不是子类的子代表MimePart,它是子类MimeEntity(它是基类MimePart).
在新的版本,MimeMessage.Attachments是IEnumerable<MimeEntity>不是,等会包括你的消息/ RFC822附件.
您可以使用BodyParts属性而不是Attachments属性在您的MimeKit版本中解决此问题.