MailKit ImapClient читает письма с неверной кодировкой

Рейтинг: 0Ответов: 0Опубликовано: 31.01.2023

С помощь 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);

Получается еще хуже. Не могу понять в чем проблема?

Ответы

Ответов пока нет.