Beispiel #1
0
 static void Main(string[] args)
 {
     using (ImapClient client = new ImapClient())
     {
         try
         {
             client.Connection("imap.mxhichina.com", 993);
             client.login("邮箱", "密码");
             //获取邮箱文件夹
             var list = client.FoldersList();
             //获取指定文件夹
             var hasFolder = client.SelectFolder("INBOX");
             if (hasFolder)
             {
                 //要查询的时间
                 var ids = client.Search(DateTime.Now.AddDays(-1));
                 if (ids != null)
                 {
                     foreach (var id in ids)
                     {
                         try
                         {
                             var ID = Convert.ToInt32(id);
                             //获取邮件头
                             var header = client.GetHeader(ID);
                             //获取邮件主体
                             var body = client.GetBody(ID);
                             //获取附件
                             var attachemnts = client.GetAttachments(ID);
                             foreach (var attachment in attachemnts)
                             {
                                 byte[] bytes     = Convert.FromBase64String(attachment.bs64);
                                 string uploadDir = "img";
                                 if (!Directory.Exists(uploadDir))
                                 {
                                     Directory.CreateDirectory(uploadDir);
                                 }
                                 using (Image img = Image.FromStream(new MemoryStream(bytes)))
                                 {
                                     var fileName = uploadDir += "/" + System.Guid.NewGuid().ToString() + ".jpg";
                                     img.Save(uploadDir, ImageFormat.Jpeg);
                                 }
                             }
                         }
                         catch (Exception ex)
                         {
                             Console.WriteLine("获取邮件异常,id:{0},异常{1}", id, ex.Message);
                         }
                     }
                 }
             }
         }
         catch (Exception ex)
         {
             ;
         }
     }
 }
Beispiel #2
0
        /// <summary>
        /// Searches the ac
        /// </summary>
        /// <param name="searchCriteria"></param>
        /// <param name="processMessages"></param>
        /// <returns></returns>
        public IEnumerable <IEmail> Search(EmailSearchCriteria searchCriteria, bool processMessages = true)
        {
            // create client
            var client = new ImapClient(_host, _port, _useSsl);

            // connect to host
            if (!client.Connection())
            {
                throw new ImapException(string.Format("Failed to connect to server {0}", _host));
            }

            // create result list
            var results = new List <IEmail>();

            try
            {
                // try to log in
                if (!client.LogIn(_userName, _password))
                {
                    throw new LogInException(_host, _userName);
                }

                // search either a single folder or all folders
                var folders = string.IsNullOrWhiteSpace(searchCriteria.Folder)
                                  ? (IEnumerable <Folder>)client.Folders
                                  : new[] { client.Folders[searchCriteria.Folder] };

                // search folders
                foreach (var folder in folders)
                {
                    // if folder is null, it was specified by name and not found
                    if (folder == null)
                    {
                        throw new FolderNotFoundException(_host, _userName, searchCriteria.Folder);
                    }

                    // add results of search
                    results.AddRange(SearchFolder(folder, searchCriteria));
                }

                // download messages if indicated
                if (processMessages)
                {
                    results.ForEach(m => m.Download());
                }
            }
            finally
            {
                // disconnect after search is done
                client.Disconnect();
            }

            return(results);
        }
        public static ImapClient FromLoginInfo(string username, string password)
        {
            var imapClient = new ImapClient("imap.gmail.com", 993, true);

            if (!imapClient.Connection())
                throw new Exception("Could not connect!");
            if (!imapClient.LogIn(username, password))
                throw new Exception("Could not log in!");

            return imapClient;
        }
Beispiel #4
0
        public MessageCollection FetchMessages(string host, string login, string pass, string imapQuery)
        {
            var client = new ImapClient(host, 993, true);

            client.Connection();
            client.LogIn(login, pass);

            var messages = client.Folders ["INBOX"].Search(imapQuery, false);

            foreach (var m in messages)
            {
                m.Process();
            }

            client.Disconnect();

            return(messages);
        }
Beispiel #5
0
        /// <summary>
        /// Searches the ac
        /// </summary>
        /// <param name="searchCriteria"></param>
        /// <param name="processMessages"></param>
        /// <returns></returns>
        public IEnumerable<IEmail> Search(EmailSearchCriteria searchCriteria, bool processMessages = true)
        {
            // create client
            var client = new ImapClient(_host, _port, _useSsl);

            // connect to host
            if (!client.Connection())
                throw new ImapException(string.Format("Failed to connect to server {0}", _host));

            // create result list
            var results = new List<IEmail>();

            try
            {
                // try to log in
                if (!client.LogIn(_userName, _password))
                    throw new LogInException(_host, _userName);

                // search either a single folder or all folders
                var folders = string.IsNullOrWhiteSpace(searchCriteria.Folder)
                                  ? (IEnumerable<Folder>)client.Folders
                                  : new[] {client.Folders[searchCriteria.Folder]};

                // search folders
                foreach (var folder in folders)
                {
                    // if folder is null, it was specified by name and not found
                    if (folder == null) throw new FolderNotFoundException(_host, _userName, searchCriteria.Folder);

                    // add results of search
                    results.AddRange(SearchFolder(folder, searchCriteria));
                }

                // download messages if indicated
                if (processMessages) results.ForEach(m => m.Download());
            }
            finally
            {
                // disconnect after search is done
                client.Disconnect();
            }

            return results;
        }
Beispiel #6
0
        private void ProcessEmails()
        {
            // using IMAPX library
            // http://hellowebapps.com/products/imapx/

            string username = txtUsername.Text;
            string password = txtPassword.Text;

            try
            {
                ImapClient client = new ImapClient(txtIMAPServer.Text, GetUserEnteredPort(), chkSSL.Checked);

                AddMessage("Initialized");

                bool result = client.Connection();

                if (result)
                {
                    AddMessage("Connected to server");
                }
                else
                {
                    AddMessage("Unable to connect to server");
                    return;
                }

                result = client.LogIn(username, password);

                if (!result)
                {
                    AddMessage("Unable to login. Check login details.");
                    return;
                }

                AddMessage("Logged in");

                Folder folder = client.Folders[txtFolder.Text];

                if (folder == null)
                {
                    AddMessage("Folder not found. Check folder name.");
                    return;
                }

                MessageCollection messageCollection = folder.Search("FROM \"iTunes Store\"", false);

                AddMessage("Found " + messageCollection.Count + " messages");

                AddMessage("***************************");

                int count = 0;

                foreach (Message message in messageCollection)
                {
                    if (m_Cancel)
                    {
                        AddMessage("Cancelled");
                        AddItemToSimpleRTB("\nCancelled");
                        return;
                    }

                    count++;

                    message.Process();

                    string from = "unknown";

                    if (message.From.Count > 0)
                        from = message.From[0].Address;

                    AddMessage("Processing Message " + count + " of " + messageCollection.Count + " : " + from + ", " + message.Subject);

                    ProcessMessage(count, message);
                }

                AddMessage("Done");

                UpdateStatusBar(string.Format("Finished processing {0} messages. Found {1} apps.  Total cost: ${2}", messageCollection.Count, m_AppCount, m_TotalCost.ToString("N2")));
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }