MimeKit 附件正文编码问题
Posted
技术标签:
【中文标题】MimeKit 附件正文编码问题【英文标题】:MimeKit attachment body encoding issue 【发布时间】:2019-07-27 01:11:22 【问题描述】:我需要获取邮箱中的所有电子邮件。 我需要阅读附件的正文以获取信息。 但是我有编码问题,无法解决这个问题。
代码示例:
using (var client = new ImapClient())
client.ServerCertificateValidationCallback = (s, c, h, b) => true;
client.Connect("imap.secureserver.net", 143, SecureSocketOptions.Auto); // godaddy
client.Authenticate("username", "password");
client.Inbox.Open(FolderAccess.ReadOnly);
IList<UniqueId> uids = client.Inbox.Search(SearchQuery.All);
foreach (UniqueId uid in uids)
MimeMessage message = client.Inbox.GetMessage(uid);
foreach (MimeEntity attachment in message.Attachments)
var fileName = "test" + Tools.GenerateRandomString(5);
if ((attachment is MessagePart))
var attachmentBody = ((MessagePart)attachment).Message.ToStringNullSafe();
附件标题:
内容类型:text/plain;charset="utf-8"
Content-Transfer-Encoding:quoted-printable
附件正文中的编码问题
主题:Bili=C5=9Fim A.=C5=9E.
【问题讨论】:
【参考方案1】:您的 foreach 循环似乎不完整,因为 MessagePart
不能代表 text/plain;charset="utf-8"
MIME 部分,因此您的代码和结果不匹配。
也就是说,您看到的是内容已编码。您需要对其进行解码:
if (attachment is MimePart)
part = (MimePart) attachment;
using (var stream = File.Create (fileName))
part.Content.DecodeTo (stream);
【讨论】:
以上是关于MimeKit 附件正文编码问题的主要内容,如果未能解决你的问题,请参考以下文章
Javamail 使用 7BIT 内容传输编码解析电子邮件正文
JavaMail 从字符串发送邮件附件 - 编码 UTF-8