Как прочитать сообщение 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);
    }
} 

Ответы (0 шт):