示例#1
0
        public void DownloadMessageHeaders(Folder folder)
        {
            ImapX.Enums.MessageFetchMode messageFetchMode = Client.Behavior.MessageFetchMode;
            Client.Behavior.MessageFetchMode = ImapX.Enums.MessageFetchMode.Headers;

            folder.Messages.Download();

            Client.Behavior.MessageFetchMode = messageFetchMode;
        }
示例#2
0
        internal List <Email> GetEmails(FolderType folder, long amount, ImapX.Enums.MessageFetchMode mode)
        {
            var messages = DownloadMessages(folder, ref amount, mode);
            var emails   = new List <Email>();

            for (int i = 0; i < amount; i++)
            {
                emails.Add(GetEmail(messages, i, mode));
            }
            return(emails);
        }
示例#3
0
        private ImapX.Collections.MessageCollection DownloadMessages(FolderType emailFolder, ref long amount, ImapX.Enums.MessageFetchMode mode)
        {
            ImapX.Folder folder;
            switch (emailFolder)
            {
            case FolderType.All:
                folder = _client.Folders.All;
                break;

            case FolderType.Inbox:
                folder = _client.Folders.Inbox;
                break;

            case FolderType.Trash:
                folder = _client.Folders.Trash;
                break;

            case FolderType.Drafts:
                folder = _client.Folders.Drafts;
                break;

            case FolderType.Flagged:
                folder = _client.Folders.Flagged;
                break;

            case FolderType.Important:
                folder = _client.Folders.Important;
                break;

            case FolderType.Junk:
                folder = _client.Folders.Junk;
                break;

            case FolderType.Sent:
                folder = _client.Folders.Sent;
                break;

            default:
                throw new DownloadException("Download failed.");
            }
            var messages = folder.Messages;
            var n        = folder.Exists;

            if (n < amount)
            {
                messages.Download("ALL", mode);
                amount = n;
            }
            else if (amount < Int32.MaxValue)
            {
                messages.Download("ALL", mode, (int)amount);
            }
            return(messages);
        }
示例#4
0
        internal void SaveAllInEml(FolderType emailFolder, long amount, string folderPath, ImapX.Enums.MessageFetchMode mode)
        {
            var messages = DownloadMessages(emailFolder, ref amount, mode);

            Directory.CreateDirectory(folderPath);
            //foreach (var msg in messages)
            //{
            //    var filePath = Path.Combine(folderPath, Path.GetRandomFileName() + ".eml");
            //    msg.Save(folderPath);
            //}
            for (int i = 0; i < amount; i++)
            {
                var filePath = Path.Combine(folderPath, Path.GetRandomFileName() + ".eml");
                SaveInEml(messages, i, filePath, mode);
            }
        }
示例#5
0
        internal void SaveIdsInEml(FolderType emailFolder, int[] ids, string folderPath, ImapX.Enums.MessageFetchMode mode)
        {
            var id       = (long)ids[ids.Length - 1];
            var messages = DownloadMessages(emailFolder, ref id, mode);

            Directory.CreateDirectory(folderPath);
            foreach (var i in ids)
            {
                var filePath = Path.Combine(folderPath, Path.GetRandomFileName() + ".eml");
                SaveInEml(messages, i, filePath, mode);
            }
        }
示例#6
0
        //private Email GetEmail(Message msg)
        //{
        //    if (!msg.Download())
        //        throw new DownloadException("Incorrect message id");
        //    return new ImapEmail(msg, mode == ImapX.Enums.MessageFetchMode.Full ? true : false);
        //}


        private static ImapX.Message GetMessage(ImapX.Collections.MessageCollection messages, int id, ImapX.Enums.MessageFetchMode mode)
        {
            var msg = messages[id];

            if (!msg.Download(mode))
            {
                throw new DownloadException("Incorrect message id");
            }
            return(msg);
        }
示例#7
0
        internal Email GetEmail(ImapX.Collections.MessageCollection messages, int id, ImapX.Enums.MessageFetchMode mode)
        {
            var email = new ImapEmail(GetMessage(messages, id, mode), mode == ImapX.Enums.MessageFetchMode.Full ? true : false);

            return(email);
        }
示例#8
0
 private static void SaveInEml(ImapX.Collections.MessageCollection messages, int id, string filePath, ImapX.Enums.MessageFetchMode mode)
 {
     GetMessage(messages, id, mode).Save(filePath);
 }