Как прочитать сообщение IMAP и получить с него Body и засунуть в переменную? C#
Вопрос в том, чтобы получить тело сообщения и использовать его. Как я могу получить его и перезаписать в переменную?
using (var client = new ImapClient(logger))
{
lock (client.SyncRoot)
{
client.Connect("hosting.com", 993, true);
client.CheckCertificateRevocation = false;
client.AuthenticationMechanisms.Remove("XOAUTH2");
//client.AuthenticationMechanisms.Remove("NTLM");
client.Authenticate(new NetworkCredential("[email protected]", "password"));
client.Inbox.Open(FolderAccess.ReadWrite);
IList<IMessageSummary> messages = null;
int count = 0;
if (client.Inbox.Count > 0)
{
messages = client.Inbox.Fetch(0, -1, MessageSummaryItems.Full | MessageSummaryItems.UniqueId).ToList();
count = messages.Count;
}
client.Inbox.CountChanged += (sender, e) =>
{
Console.WriteLine("CountChanged");
var folder = (ImapFolder)sender;
if (folder.Count > count)
{
Console.WriteLine("{0}: {1} new messages have arrived.", folder, folder.Count - count);
//lock (folder.SyncRoot)
//{
// foreach (var item in folder)
// {
// Console.WriteLine(item.Body);
// }
//}
// message = (async item =>
//{
// message = await folder.GetMessageAsync(folder.Count - 1);
//});
//var message = folder.GetMessage(folder.Count - 1);
//Console.WriteLine(message.Body);
CreateRecordForModuleZohoSurveyResponses("Zoho_Survey_Responses");
}
else if (folder.Count < count)
{
Console.WriteLine("{0}: {1} messages have been removed.", folder, count - folder.Count);
}
else
{
Console.WriteLine("{0}: the message count is now {1}.", folder, folder.Count);
}
count = folder.Count;
};
client.Inbox.MessageExpunged += (sender, e) =>
{
Console.WriteLine("MessageExpunged");
var folder = (ImapFolder)sender;
if (e.Index < messages.Count)
{
var message = messages[e.Index];
Console.WriteLine("{0}: expunged message {1}: Subject: {2}", folder, e.Index, message.Envelope.Subject);
messages.RemoveAt(e.Index);
}
else
{
Console.WriteLine("{0}: expunged message {1}: Unknown message.", folder, e.Index);
}
count--;
};
client.Inbox.MessageFlagsChanged += (sender, e) =>
{
Console.WriteLine("MessageFlagsChanged");
var folder = (ImapFolder)sender;
Console.WriteLine("{0}: flags for message {1} have changed to: {2}.", folder, e.Index, e.Flags);
};
Console.WriteLine("Hit any key to end the IDLE command.");
using (var done = new CancellationTokenSource())
{
var task = client.IdleAsync(done.Token);
Console.ReadKey();
done.Cancel();
task.Wait();
}
if (count > messages.Count)
{
Console.WriteLine("The new messages that arrived during IDLE are:");
foreach (var message in client.Inbox.Fetch(messages.Count, -1, MessageSummaryItems.Full | MessageSummaryItems.UniqueId))
{
Console.WriteLine("Subject: {0}", message.Envelope.Subject);
}
}
client.Disconnect(true);
}
}