コード例 #1
0
        public static List <MailMessage> GetFilteredMessages(SearchCondition condition)
        {
            IEnumerable <uint>        messageIds = client.Search(SearchCondition.All());
            IEnumerable <MailMessage> messages   = client.GetMessages(messageIds);

            return(messages.ToList());
        }
コード例 #2
0
        public EmailHeaderResult GetInboxEmailHeaders(int page, int pageSize)
        {
            if (!this.IsCorrect)
            {
                throw new EmailException("Bad username or password");
            }

            try
            {
                using (var client = this.CreateImapClient())
                {
                    var uids  = client.Search(SearchCondition.All(), "inbox").OrderByDescending(u => u).ToList();
                    var total = uids.Count;
                    uids = uids.Skip((page - 1) * pageSize).Take(pageSize).ToList();
                    var list = new List <EmailHeader>();
                    foreach (var uid in uids)
                    {
                        var msg = client.GetMessage(uid, FetchOptions.HeadersOnly, mailbox: "inbox");
                        list.Add(new EmailHeader(msg, uid));
                    }

                    return(new EmailHeaderResult {
                        Mails = list, Page = page, PageSize = pageSize, Total = total
                    });
                }
            }
            catch (InvalidCredentialsException)
            {
                throw new EmailException("Wrong username or password");
            }
        }
コード例 #3
0
        /// <summary>
        ///      SentSince = Date  = DateFrom
        ///      SentBefore = Date + 1 = DateTO
        /// </summary>
        /// <returns></returns>
        public SearchCondition SetSearchConditions()
        {
            SearchCondition result = SearchCondition.All();

            if (this.SearchByDateRange)
            {
                result = result.And(SearchCondition.SentBefore(new DateTime(DateTo.Year, DateTo.Month, DateTo.Day).AddDays(1))
                                    .And(SearchCondition.SentSince(new DateTime(DateFrom.Year, DateFrom.Month, DateFrom.Day))));
            }
            if (this.Unread)
            {
                result = result.And(SearchCondition.Unseen());
            }
            if (!string.IsNullOrEmpty(this.Sender))
            {
                result = result.And(SearchCondition.From(this.Sender));
            }
            if (!string.IsNullOrEmpty(this.Subject))
            {
                result = result.And(SearchCondition.Subject(this.Subject));
            }



            return(result);
        }
コード例 #4
0
        public void EmptyInbox()
        {
            // delete specific emails
            using (ImapClient Client = new ImapClient("imap.gmail.com", 993, "*****@*****.**", "aq1sw2de3fr4", AuthMethod.Login, true))
            {
                IEnumerable <uint> uids = Client.Search(SearchCondition.All());

                foreach (uint uid in uids)
                {
                    MailMessage msg    = Client.GetMessage(uid, FetchOptions.Normal);
                    bool        delete = false;

                    // process the message here
                    if (msg.Subject.Equals("subject"))
                    {
                        Console.WriteLine("subject message deleting...");
                        delete = true;
                    }

                    if (delete)
                    {
                        Client.DeleteMessage(uid);
                    }
                }
            }
        }
コード例 #5
0
        public void move()
        {
            // move specific emails
            using (ImapClient Client = new ImapClient("imap.gmail.com", 993, "*****@*****.**", "aq1sw2de3fr4", AuthMethod.Login, true))
            {
                IEnumerable <uint> uids = Client.Search(SearchCondition.All());

                foreach (uint uid in uids)
                {
                    MailMessage msg  = Client.GetMessage(uid, FetchOptions.Normal);
                    bool        move = false;

                    // process the message here
                    if (msg.Subject.Equals("Hello"))
                    {
                        Console.WriteLine("Hello message moving to trash...");
                        move = true;
                    }

                    if (move)
                    {
                        Client.MoveMessage(uid, "[Gmail]/Trash");
                    }
                }
            }
        }
コード例 #6
0
        public List <Email> ReadEmails()
        {
            List <Email> emails = new List <Email>();

            S22.Imap.IImapClient imapClient = new S22.Imap.ImapClient("imap.gmail.com", 993, "*****@*****.**", "Demo1234!", AuthMethod.Login, true);
            IEnumerable <String> mailboxes  = imapClient.ListMailboxes();

            foreach (String mailbox in mailboxes)
            {
                Debug.WriteLine(mailbox);
            }

            IEnumerable <uint>        uids     = imapClient.Search(SearchCondition.All(), "INBOX");
            IEnumerable <MailMessage> messages = imapClient.GetMessages(uids);

            foreach (MailMessage message in messages)
            {
                Debug.WriteLine(message.Subject);
                emails.Add(new Email {
                    Subject = message.Subject, Body = message.Body, From = message.From.ToString(), To = message.To.ToString(), Date = message.Date().Value
                });
            }

            return(emails);
        }
コード例 #7
0
 public List <MailMessage> GetAllMailHeaders(MailObj mObj)
 {
     using (ImapClient Client = new ImapClient(mObj.ServerAddress, mObj.Port, mObj.MailAddress, mObj.MailAddressPassword, AuthMethod.Login, true))
     {
         IEnumerable <uint> uids = Client.Search(SearchCondition.All());
         return(Client.GetMessages(uids, FetchOptions.HeadersOnly).ToList());
     }
 }
コード例 #8
0
        public void UpdateEmails()
        {
            using (ImapClient client = new ImapClient("imap.gmail.com", 993, "*****@*****.**", "DeMonfortUniversity2015", AuthMethod.Auto, true))
            {
                int EmailAddressNo = 0;

                var uids     = client.Search(SearchCondition.All());
                var messages = client.GetMessages(uids);

                foreach (var mail in messages)
                {
                    //set up the data connection
                    clsDataConnection DB = new clsDataConnection();

                    DB.AddParameter("EmailContent", mail.Body);
                    DB.Execute("sproc_tblEmail_CheckIfExists");
                    DB.Execute("sproc_tblArchive_CheckIfExists");

                    //Int32 Result = Convert.ToInt32(DB.DataTable.Rows[0]["EmailNo"]);
                    if (DB.DataTable.Rows.Count == 0)
                    {
                        clsDataConnection DB5  = new clsDataConnection();
                        string            from = Convert.ToString(mail.From);
                        //this uses substrings to extract the data we need from the email
                        string output = from.Substring(from.IndexOf("<") + 1, from.IndexOf(">") - from.IndexOf("<") - 1);
                        DB5.AddParameter("EmailAddress", output);
                        DB5.Execute("sproc_tblEmail_CheckEmailAddress");
                        if (DB.DataTable.Rows.Count == 0)
                        {
                            clsDataConnection DB3 = new clsDataConnection();
                            DB3.AddParameter("EmailAddress", output);
                            DB3.Execute("sproc_tblEmailAddress_InsertNewEmailAddress");
                        }
                        clsDataConnection DB4 = new clsDataConnection();
                        DB4.AddParameter("EmailAddress", output);
                        DB4.Execute("sproc_tblEmail_CheckEmailAddress");
                        EmailAddressNo = Convert.ToInt32(DB4.DataTable.Rows[0]["EmailAddressNo"]);

                        //new data connection for new parameters
                        clsDataConnection DB2 = new clsDataConnection();

                        var header = mail.Headers["Subject"];

                        string body = mail.Body;

                        DB2.AddParameter("EmailSubject", header);

                        DB2.AddParameter("EmailContent", body);

                        DB2.AddParameter("EmailAddressNo", EmailAddressNo);

                        DB2.Execute("sproc_tblEmail_InsertNewEmail");
                    }
                }
            }
        }
コード例 #9
0
 public void GetEmails(string mailbox)
 {
     using (ImapClient Client = new ImapClient(Host, Port, Username, Password, AuthMethod.Login, true))
     {
         Console.WriteLine("Descargando Mensajes!...");
         IEnumerable <uint> uids = Client.Search(SearchCondition.All(), mailbox);
         //IEnumerable<MailMessage> messages = Client.GetMessages(uids, true, mailbox);
         Messages = Client.GetMessages(uids, true, mailbox).ToList();
     }
 }
コード例 #10
0
        public MailMessage GetEmail(string mailbox)
        {
            using (ImapClient Client = new ImapClient(Host, Port, Username, Password, AuthMethod.Login, true))
            {
                Console.WriteLine("Descargando Mensajes del folder " + mailbox + "...");
                Console.WriteLine();
                List <uint> uids = Client.Search(SearchCondition.All(), mailbox).ToList();
                Messages = Client.GetMessages(uids, true, mailbox).ToList();
            }

            return(Messages.First());
        }
コード例 #11
0
ファイル: Program.cs プロジェクト: runbow/C-Mail
        //#######################
        //#Receive email methods#
        //#######################

        /// <summary>
        /// Retrieves all the unseen messages from the server
        /// </summary>
        /// <param name="FromAddress">User's email address</param>
        /// <param name="FromPass">User's password</param>
        /// <returns>All the retrieved messages</returns>
        public static List <MailMessage> GetAllMessages(string FromAddress, string FromPass)
        {
            // Check the host
            if (CheckEmailHostIMAP(FromAddress) == true && !(string.IsNullOrEmpty(FromPass)))
            {
                try
                {
                    // Create a new ImapClient
                    ImapClient client = new ImapClient(Host, Port, FromAddress, FromPass, AuthMethod.Login, true);

                    // Get the uids
                    IEnumerable <uint> uids = client.Search(SearchCondition.All());

                    // Get the messages
                    IEnumerable <MailMessage> Messages = client.GetMessages(uids);

                    // Convert to list
                    List <MailMessage> MessagesList = Messages.ToList <MailMessage>();

                    // Return them
                    return(MessagesList);
                }
                catch (Exception exception)
                {
                    // Create the error message
                    string ErrorMessage = "ERROR 60002" + "\n" + exception.ToString();

                    // Show the error message
                    Program.ErrorPopupCall(ErrorMessage);

                    // Make an empty list to return
                    List <MailMessage> Stop = new List <MailMessage>();

                    // Stop executing this method
                    return(Stop);
                }
            }
            else
            {
                // Create the error message
                string ErrorMessage = "ERROR 60003" + "\n" + "EmailHostIMAP(FromAddress) returned false";

                // Show the error message
                Program.ErrorPopupCall(ErrorMessage);

                // Make an empty list to return
                List <MailMessage> Stop = new List <MailMessage>();

                // Stop executing this method
                return(Stop);
            }
        }
コード例 #12
0
        public void S22_GetMessages()
        {
            using (var client = new ImapClient(host, 993, username, password, AuthMethod.Login, true))
            {
                var search   = client.Search(SearchCondition.All());
                var messages = client.GetMessages(search);

                foreach (var message in messages)
                {
                    Console.WriteLine($"{message.Date()} {message.Subject}");
                }
            }
        }
コード例 #13
0
        public IEnumerable <MailMessage> GetMessages()
        {
            IEnumerable <MailMessage> messages;
            ImapClient client = GetClient();

            using (client)
            {
                IEnumerable <uint> uids = client.Search(SearchCondition.All());
                messages = client.GetMessages(uids);
            }

            return(messages);
        }
コード例 #14
0
        public void mailboxList()
        {
            // move specific emails
            using (ImapClient Client = new ImapClient("imap.gmail.com", 993, "*****@*****.**", "aq1sw2de3fr4", AuthMethod.Login, true))
            {
                IEnumerable <uint> uids = Client.Search(SearchCondition.All());

                IEnumerable <string> mailboxes = Client.ListMailboxes();

                foreach (string i in mailboxes)
                {
                    Console.WriteLine(i.ToString());
                }
            }
        }
コード例 #15
0
        private void SynchronizeMailbox(ImapClient client, string mailbox, DirectoryInfo target)
        {
            var info = client.GetMailboxInfo(mailbox);

            Log.Info($"Synchronizing mailbox {info.Name} ({mailbox}).");

            // Fetch online data
            var onlineUids = client.Search(SearchCondition.All(), mailbox).ToList();

            Log.Verbose($"Found {onlineUids.Count()} messages online.");

            // Match offline data
            foreach (var file in target.GetFiles("*.eml"))
            {
                var  fileName = Path.GetFileNameWithoutExtension(file.Name);
                uint fileUid;
                if (!uint.TryParse(fileName.PadLeft(8, '0').Substring(0, 8), NumberStyles.HexNumber, CultureInfo.InvariantCulture, out fileUid))
                {
                    Log.Warn($"Unexpected file '{file.Name}' found in mailbox {mailbox}.");
                    continue;
                }

                if (this.Options.Delete && !onlineUids.Contains(fileUid))
                {
                    Log.Verbose($"Deleting obsolete message '{file.Name}'...");
                    file.Delete();
                }

                onlineUids.Remove(fileUid);
            }

            // Fetch new files
            Log.Info($"Fetching {onlineUids.Count} messages...");
            foreach (var onlineUid in onlineUids)
            {
                var message = client.GetMessage(onlineUid, FetchOptions.Normal, false, mailbox);
                if (message.From == null)
                {
                    message.From = new MailAddress(Options.UserName);
                }
                var fileName = $"{onlineUid:x8} {CleanSubject(message.Subject)}.eml";
                message.Save(Path.Combine(target.FullName, fileName));
                Log.Verbose($"Fetched message '{fileName}'");
            }
        }
コード例 #16
0
        public IEnumerable <MailDto> ReceiveAsync(params string[] identifiers)
        {
            using (var client = new S22.Imap.ImapClient(this.Host, this.Port, this.EnableSsl))
            {
                client.Login(this.Email, this.Password.Decrypt(), AuthMethod.Login);

                var uids             = client.Search(SearchCondition.All());
                var identifiersAsUid = identifiers.Select(x => Convert.ToUInt32(x));

                foreach (var uid in uids.Where(x => !identifiersAsUid.Contains(x)))
                {
                    var message = client.GetMessage(uid);
                    yield return(this.CreateMail(message, uid.ToString()));
                }

                client.Logout();
            }
        }
コード例 #17
0
        public ActionResult MailDetay(DateTime date)
        {
            MailVM m = new MailVM();

            using (ImapClient client = new ImapClient("imap.yandex.com.tr", 993, "*****@*****.**", "Umurbey.17", AuthMethod.Login, true))
            {
                IEnumerable <uint>        uids1    = client.Search(SearchCondition.All());
                IEnumerable <MailMessage> messages = client.GetMessages(uids1);
                MailMessage item = messages.FirstOrDefault(x => x.Date() == date);

                m.from       = item.From.DisplayName;
                m.Subject    = item.Subject;
                m.Date       = item.Date().Value;
                m.Body       = item.Body;
                m.Attachment = item.Attachments;
            }
            return(View(m));
        }
コード例 #18
0
        public IEnumerable <MailMessage> GetMessages()
        {
            ImapClient client = new ImapClient(hostname, 993, Username, Password, AuthMethod.Login, true);
            IEnumerable <MailMessage> messages;

            using (client)
            {
                try
                {
                    IEnumerable <uint> uids = client.Search(SearchCondition.All());
                    messages = client.GetMessages(uids.ToArray());
                }
                catch (NullReferenceException en)
                {
                    throw en;
                }
            }
            return(messages);
        }
コード例 #19
0
        // GET: Home
        public ActionResult Index()
        {
            try {
                ImapClient imap = new ImapClient("imap.mail.yahoo.com", 993, true);
                imap.Login("******@yahoo.com", "*******", AuthMethod.Login);
                IEnumerable <uint> uids     = imap.Search(SearchCondition.All());
                dynamic            messages = imap.GetMessages(uids);
                List <string>      bodys    = new List <string>();
                for (var i = 0; i < messages.Count; i++)
                {
                    if (messages[i].From.Address == "*****@*****.**")
                    {
                        bodys.Add(messages[i].Body);
                    }
                }



                List <string> bounces = new List <string>();
                for (int i = 0; i < bodys.Count; i++)
                {
                    var index1 = bodys[i].IndexOf("\r\n\r\n<") + "\r\n\r\n<".Length;
                    var index2 = bodys[i].IndexOf(">:\r\n550: 5.2.1");
                    //var index1 = bodys[i].IndexOf("\r\n\r\n<") + "\r\n\r\n<".Length;
                    //var index2 = bodys[i].IndexOf(">:\r\n554:");
                    if (index1 != -1 && index2 != -1)
                    {
                        bounces.Add(bodys[i].Substring(index1, index2 - index1));
                    }
                }

                ViewBag.count   = bounces.Count;
                ViewBag.bounces = bounces;
            }
            catch (Exception e)
            {
                ViewBag.exception = e.ToString();
            }



            return(View());
        }
コード例 #20
0
        private void frmUpdateEmailTest_Load(object sender, EventArgs e)
        {
            {
                using (ImapClient client = new ImapClient("imap.gmail.com", 993, "*****@*****.**", "DeMonfortUniversity2015", AuthMethod.Auto, true))
                {
                    var uids     = client.Search(SearchCondition.All());
                    var messages = client.GetMessages(uids);

                    foreach (var mail in messages)
                    {
                        var    header = mail.Headers["Subject"];
                        string body   = mail.Body;
                        string from   = Convert.ToString(mail.From);
                        string output = from.Substring(from.IndexOf("<") + 1, from.IndexOf(">") - from.IndexOf("<") - 1);
                        textBox1.Text = output;
                    }
                }
            }
        }
コード例 #21
0
        public IEnumerable <MailMessage> GetMails()
        {
            IEnumerable <MailMessage> messages;
            var connection = ConnectToGmail();

            if (connection == null)
            {
                errorMsg = "Username or password incorrect";
            }
            else
            {
                using (connection)
                {
                    IEnumerable <uint> uids = connection.Search(SearchCondition.All());
                    messages = connection.GetMessages(uids);
                }
                return(messages);
            }
            return(null);
        }
コード例 #22
0
        public async Task <MailMessage[]> GetInboxMessagesAsync(CancellationToken ct = default(CancellationToken))
        {
            bool loggedIn = await this.LoginIfPossibleAndRequired();

            if (!loggedIn)
            {
                return(new MailMessage[0]);
            }

            MailMessage[] messages = await Task <MailMessage[]> .Run(() => {
                uint[] inboxMsgIds = this.client.Search(SearchCondition.All());
                return(this.client.GetMessages(inboxMsgIds));
            });

            if (messages == null)
            {
                messages = new MailMessage[0];
            }

            return(messages);
        }
コード例 #23
0
        public List <int?> GetAllIDs()
        {
            var ids = new List <int>();

            try
            {
                using (var client = GetClient())
                {
                    ids = client.Search(SearchCondition.All()).Select(x => (int)x).ToList();
                }
            }
            catch (Exception)
            {
                if (!_suppressExceptions)
                {
                    throw;
                }
            }

            return(ids.Select(x => (int?)x).ToList());
        }
コード例 #24
0
ファイル: Form1.cs プロジェクト: ddm4313/gutmail
 private void Login(string username, string password)
 {
     try
     {
         using (ImapClient Client = new ImapClient("imap.gmail.com", 993, username, password, AuthMethod.Login, true))
         {
             label2.Text = username;
             pictureBox1.Load("user_80px.png");
             int messages            = 0;
             IEnumerable <uint> uids = Client.Search(SearchCondition.All());
             foreach (uint message in uids)
             {
                 messages++;
             }
             CountMessages(messages);
         }
     }
     catch (S22.Imap.InvalidCredentialsException)
     {
         MessageBox.Show("Invalid credentials.");
     }
 }
コード例 #25
0
        public IEnumerable <MailMessage> GetMessages(String email, String password, string filterOption = "")
        {
            try
            {
                using (ImapClient client = new ImapClient(imapHost, 993, email, password, AuthMethod.Login, true))
                {
                    SearchCondition searchCondition;
                    switch (filterOption)
                    {
                    case "Unread":
                        searchCondition = SearchCondition.Unseen();
                        break;

                    case "New":
                        searchCondition = SearchCondition.New();
                        break;

                    case "Unanswered":
                        searchCondition = SearchCondition.Unanswered();
                        break;

                    default:
                        searchCondition = SearchCondition.All();
                        break;
                    }
                    // Returns a collection of identifiers of all mails matching the specified search criteria.
                    IEnumerable <uint> uids = client.Search(searchCondition);
                    // Download mail messages from the default mailbox.
                    IEnumerable <MailMessage> messages = client.GetMessages(uids);

                    return(messages);
                }
            }
            catch (InvalidCredentialsException)
            {
                return(null);
            }
        }
コード例 #26
0
        public void Run()
        {
            using (ImapClient Client = new ImapClient("imap.gmail.com", 993, "*****@*****.**", "aq1sw2de3fr4", AuthMethod.Login, true))
            {
                // checks all emails and sends to handlers to check format
                IEnumerable <MailMessage> uids = Client.Search(SearchCondition.All()).Select(uid => Client.GetMessage(uid));

                bool handled = false;

                foreach (MailMessage msg in uids)
                {
                    if (msg.Subject.Equals("Hello"))
                    {
                        Console.WriteLine("Hello message found...");
                        //Console.WriteLine(msg.Body);
                        msg.Dispose();
                    }
                    //else if (msg.Body.ToString().Trim().Equals("hello"))  // \r\n\r\n
                    else if (msg.Subject.Equals("subject"))
                    {
                        Console.WriteLine("subject message found...");
                        msg.Dispose();
                    }
                    else if (msg.Subject.Equals("hi"))
                    {
                        Console.WriteLine("hi message found...");
                        msg.Dispose();
                    }
                    else
                    {
                        Console.WriteLine("msg not found");
                    }
                }

                //EmailWriter write = new EmailWriter();
                //write.GenerateEmail("hello", "subject", "*****@*****.**", false);
            }
        }
コード例 #27
0
        public ActionResult Email(string folder)
        {
            List <MailVM> mails = new List <MailVM>();

            using (ImapClient client = new ImapClient("imap.yandex.com.tr", 993, "*****@*****.**", "Umurbey.17", AuthMethod.Login, true))
            {
                IEnumerable <uint>        uids1    = client.Search(SearchCondition.All(), mailbox: folder);
                IEnumerable <MailMessage> messages = client.GetMessages(uids1);
                foreach (var item in messages)
                {
                    MailVM m = new MailVM();
                    m.from       = item.From.DisplayName;
                    m.Subject    = item.Subject;
                    m.Date       = item.Date().Value;
                    m.Read       = true;
                    m.Attachment = item.Attachments;
                    m.Body       = item.Body;
                    mails.Add(m);
                }
            }

            return(View(mails.OrderByDescending(x => x.Date).ToList()));
        }
コード例 #28
0
        public static string ReadGmailRecentMail(string UserAccount, string Password)  // 讀取Gmail最新信件內容
        {
            string hostname = "imap.gmail.com";
            string username = UserAccount;
            string password = Password;

            using (ImapClient client = new ImapClient(hostname, 993, username, password, AuthMethod.Login, true))
            {
                var uids         = client.Search(SearchCondition.All()); // 指定信件匣 "所有" 信件
                var last_message = client.GetMessages(uids).Last();      // 擷取信件匣內"最新"mail

                string from             = last_message.From.Address.ToString().Trim();
                string from_displayname = last_message.From.DisplayName.ToString().Trim();
                string to         = last_message.To.ToString().Trim();
                string date       = last_message.Date().ToString().Trim();
                string subject    = last_message.Subject.ToString().Trim();
                string body       = last_message.Body.ToString().Trim();
                string bodyHTNL   = last_message.IsBodyHtml.ToString().Trim();
                string attachment = last_message.Attachments.ToString().Trim();

                return($" 寄件人: {from_displayname} <{from}> \n 收件人: {to} \n 收件時間: {date} \n 主旨: {subject} \n 內文: \n\n {body}"); // report出信件內容
            }
        }
コード例 #29
0
 protected List <uint> getUidsAll(string mailbox)
 {
     return(Conversion.IEnumUint2List(this.client.Search(SearchCondition.All(), mailbox)));
 }
コード例 #30
0
ファイル: MailReceiver.cs プロジェクト: ALFTM/MailSecure
        public List <MailMessage> GetAllMessages()
        {
            var uids = imapClient.Search(SearchCondition.All());

            return(imapClient.GetMessages(uids).ToList());
        }