Я пытаюсь разобрать MIME-сообщения из заметок Lotus с помощью .NET Domino interop. Когда электронные письма не находятся в формате MIME, мне удалось получить контент Body через простой пункт NotesDocument.GetFirstItem("Body").Text;
. Однако с MIME я получаю пустую или пустую строку, когда пытаюсь разобрать содержимое тела.Parse MIME email from Lotus Notes
var session = new NotesSession();
session.Initialize("RadioLotus028");
session.ConvertMime = false;
var db = session.GetDatabase("PRGLNApps01/CZ/RFERL", "mail-in\\SEEurope\\MIA.nsf", false);
if (db == null) throw new ArgumentNullException("cannot load database");
var legnth = db.AllDocuments.Count;
for (int i = 1; i < legnth; i++)
{
NotesDocument doc = db.AllDocuments.GetNthDocument(i);
NotesMIMEEntity bodyMIME = doc.GetMIMEEntity();
NotesStream stream = session.CreateStream();
//bodyMIME.GetContentAsBytes(stream);
//bodyMIME.GetEntityAsText(stream);
bodyMIME.GetContentAsText(stream);
string bodyString = stream.ReadText();
var bodyString2 = stream.Read();
string bodyString3 = bodyMIME.ContentAsText;
var from = doc.GetFirstItem("From").Text;
var subject = doc.GetFirstItem("Subject").Text;
}
Есть ли у кого-нибудь опыт работы с этой проблемой? Или как получить содержимое тела как HTML или RichfullText или любым другим способом?
Вы не проверяете, содержит ли сообщение MIME или богатый текст в теле. Вы уверены, что сообщение, которое вы обрабатываете в этом почтовом ящике, все MIME? Вероятно, вы должны использовать doc.hasItem («$ NoteHasNativeMIME») для проверки. –
Вы правы! Это всего лишь пример кода. Окончательная версия содержит переключатель между типами содержимого. Так что разные ветви позаботятся о RichText, а другой - о MIME-корпусе. :) спасибо за комментарий, это сэкономит некоторое время кому-то. – Mastenka