Загрузка сообщений электронной почты с IMAPX

Я только начал использовать библиотеку с открытым исходным кодом IMAPX для взаимодействия с моим почтовым ящиком IMAP. Я следую за этой статьей на CodeProject. Я могу правильно войти в систему и получить папки электронной почты. Но проблема в том, что статья кажется неполной, что оставляет меня в середине пути. Во-первых Retrieving Email Folderчасть не сработала. Мне пришлось сделать обходной путь. Теперь я пытаюсь загрузить электронные письма из папки. Статья, касающаяся этой проблемы, содержит всего несколько строк кода:

private void foldersList_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
   var item = foldersList.SelectedItem as EmailFolder;

   if(item != null)
   {
      // Load the folder for its messages.
      loadFolder(item.Title);
   }
}

private void loadFolder(string name)
{
   ContentFrame.Content = new FolderMessagesPage(name);
}

В статье ничего не объясняется FolderMessagesPage, Итак, я сделал тестовую страницу с именем FolderMessagesPage, Я буквально понятия не имею, что поместить на этой странице. Кто-нибудь может направить меня?

1 ответ

К сожалению, сейчас у меня возникли некоторые проблемы с доступом к статье о Code Project, но если вам нужно получить электронные письма, вы можете начать со следующего примера кода, который получает электронные письма из папки "Входящие". Я думаю, что это может сработать и для вас.

        private static readonly ImapClient _client = new ImapX.ImapClient(ServerImapName, ImapPort, ImapProtocol, false);

        if (!_client.Connect())
        {
            throw new Exception("Error on conncting to the Email server.");
        }

        if (!_client.Login(User, Password))
        {
            throw new Exception("Impossible to login to the Email server.");
        }

        public static List<string> GetInboxEmails()
    {
        var lstInEmails = new List<string>();
        // select the inbox folder
        Folder inbox = _client.Folders.Inbox;
        if (inbox.Exists > 0)
        {
            var arrMsg = inbox.Search("ALL", ImapX.Enums.MessageFetchMode.Full);

            foreach (var msg in arrMsg)
            {
                var subject = msg.Subject;
                var mailBody = msg.Body.HasHtml ? msg.Body.Html : msg.Body.Text;
                lstInEmails.Add(string.Concat(subject, " - ", mailBody );
            }
        }


        return lstInEmails;
    }

Надеюсь, поможет. Хорошие байты.

Другие вопросы по тегам