Мое консольное приложение С# считывает получателей из файла .csv, который сохраняется с кодировкой UTF-8 и содержит специальные символы (китайские буквы, ö, ä и т. д.). Теперь создание .msg-файлов путем создания MailItem и после установки MailItemObject.To и MailItemObject.Body и использования MailItemObject.SaveAs работает нормально, но неправильно отображает специальные символы.
Файл в проводнике Windows выглядит так:
И тело просто игнорирует специальный символ:
При чтении/записи файлов .csv я использую Streamwriter/Streamreader и могу установить Encoding.UTF8, который также отлично работает. Это консольное приложение также генерирует файлы .xlsx из данных, считанных из файлов .csv, и это тоже работает отлично.
Мой код:
Outlook.MailItem oMsg = (Outlook.MailItem)oOL.CreateItem(Outlook.OlItemType.olMailItem);
oMsg.Subject = "Test";
string recipient = "";
foreach (string s in recipients)
{
recipient += s;
recipient += "; ";
}
oMsg.To = recipient;
string cc = "";
foreach (string s in incopy)
{
cc += s;
cc += "; ";
}
oMsg.CC = cc;
foreach (string s in stringcountries)
{
for (int i = 0; i < Directory.GetFiles(Directory.GetCurrentDirectory() + "\\outputfiles\\excel", "*" + s + "*").Length; i++)
{
oMsg.Attachments.Add(Directory.GetFiles(Directory.GetCurrentDirectory() + "\\outputfiles\\excel", "*" + s + "*")[i]);
}
}
string body = "";
oMsg.Body = body;
oMsg.SaveAs(path + recipientnames[0] + ".msg");
Любая помощь приветствуется. Спасибо!
РЕДАКТИРОВАТЬ: Если я жестко запрограммирую специальный символ, такой как ö, в исходный код, он правильно отобразится как в имени файла, так и в теле письма. Это поможет моей проблеме? Если да, может ли кто-нибудь указать мне правильное направление?
oMsg.To = String.Join(';', recipients)+"; ";
. - person Palle Due   schedule 18.02.2021type
как olMSGUnicode . Вы пробовали это? - person Fildor   schedule 18.02.2021