Загрузка сообщений электронной почты с 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;
}
Надеюсь, поможет. Хорошие байты.