MailKit ImapClient читает письма с неверной кодировкой
С помощь 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) {
// Кодировка письма указан windows-1251
Console.WriteLine(item.Body.ContentType.Charset);
// А здесь абракадабра "FW: ÄÈÑÏ/ÌÎÐÅ ¹ 054 31.01.2023 1200 ÌÑÊ"
Console.WriteLine(item.Envelope.Subject);
}
// Опущено для краткости
То есть в письме указана кодировка windows-1251 а на самом деле какая-то другая.
Пробовал как-то перекодировать:
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
var src = Encoding.GetEncoding(item.Body.ContentType.Charset);
var srcBytes = src.GetBytes(item.Envelope.Subject);
var dstBytes = Encoding.Convert(src, dest, srcBytes);
var result = dest.GetString(dstBytes);
Получается еще хуже. Не могу понять в чем проблема?
Источник: Stack Overflow на русском