Я хочу получить заголовки писем из почтового ящика, а затем полностью перезагружать некоторые письма:
static void Main(string[] args)
{
using (ImapX.ImapClient imap = new ImapX.ImapClient("imap.gmail.com", 993, true))
{
if (imap.Connect())
{
imap.Login("***************", "***************");
imap.Behavior.MessageFetchMode = ImapX.Enums.MessageFetchMode.Headers;
foreach (ImapX.Folder folder in imap.Folders)
refreshFolder(folder);
ImapX.Message msg = imap.Folders["INBOX"].Messages[0];
msg.Download(ImapX.Enums.MessageFetchMode.Full, true);
}
}
}
static void refreshFolder(ImapX.Folder folder)
{
foreach (ImapX.Folder subfolder in folder.SubFolders)
refreshFolder(subfolder);
if (folder.Selectable)
folder.Messages.Download();
}
Приведенный выше код не делает то, что мне нужно - msg
по-прежнему ничего не имеет и даже потерял заголовкипосле msg.Download(ImapX.Enums.MessageFetchMode.Full, true)
. Теперь я понял, что он пытался получить данные из папки, которую я скачал в последний раз, и она была пустой.
Однако мне удалось получить полное письмо, когда я не загружал сообщения из других папок:
static void Main(string[] args)
{
using (ImapX.ImapClient imap = new ImapX.ImapClient("imap.gmail.com", 993, true))
{
if (imap.Connect())
{
imap.Login("***************", "***************");
imap.Behavior.MessageFetchMode = ImapX.Enums.MessageFetchMode.Headers;
/*foreach (ImapX.Folder folder in imap.Folders)
refreshFolder(folder);*/
imap.Folders["INBOX"].Messages.Download();
ImapX.Message msg = imap.Folders["INBOX"].Messages[0];
msg.Download(ImapX.Enums.MessageFetchMode.Full, true);
}
}
}
Я действительно не вижу причин вспоминать, в какой папке содержится конкретная буква, потому что у меня просто есть объект Message
.Как получить остаток письма?