MaiKit ImapClient 编码错误

问题描述 投票:0回答:2

我正在使用 MailKit 库从 MS Exchange 邮箱读取电子邮件。这是我的代码

var client = new ImapClient();

///...

client.Authenticate(saslMechanism);
client.Inbox.Open(FolderAccess.ReadWrite);
var uids = client.Inbox.Search(SearchQuery.NotSeen);
var items = client.Inbox.Fetch(uids, MessageSummaryItems.All | MessageSummaryItems.BodyStructure);

foreach(var item in items) {
    
    // Here I had wron decoded characters in some emails 
    Console.WriteLine(item.Envelope.Subject);
}

/// ...

部分信息编码错误

有什么方法可以强制 mailkit 在从服务器接收到消息时以某种编码重新编码

c# encoding mailkit
2个回答
0
投票

不幸的是没有。

Envelope 数据结构不保留从服务器接收到的原始字节数据,因此它不能尝试使用不同的字符集编码再次决定它。

可以做的是修改您的获取请求以获取主题标题(除了或代替信封)然后使用:

int index = item.Headers.IndexOf(HeaderId.Subject);
Header header = item.Headers[index];
string subject = header.GetValue(“charset name goes here”);

0
投票

我这样解决了问题 将 MailKit NuGet 包授权降级为 2.15.0

<PackageReference Include="MailKit" Version="2.15.0" />

在此之前,项目使用的是最新版本

© www.soinside.com 2019 - 2024. All rights reserved.