Exemple #1
1
        private void CheckEmail()
        {
            ImapClient client = null;

            try
            {
                client = new ImapClient(MailServer, MailAccount, Password, ImapClient.AuthMethods.Login, Port, true);

                client.SelectMailbox(MailboxName);
                int messageCount = client.GetMessageCount();
                if (messageCount > 0)
                {
                    var messages = client.GetMessages(0, messageCount, false);

                    foreach (MailMessage message in messages.OrderBy(m=>m.Date))
                    {

                        ProcessAndFireEvent(message);

                        client.MoveMessage(message.Uid, ProcessedFolderName);
                    }
                }
            }
            catch (Exception e)
            {
                // :(
            }
            finally
            {
                if (client != null)
                {
                    client.Dispose();
                }
            }
        }
        public JsonResult ArchiveMail(string[] messageIds, string folderName)
        {
            var successful = false;
            if (Request.IsAuthenticated)
            {
                using (var uow = new UnitOfWork(GlobalConfig.ConnectionString))
                {
                    var user = uow.UserRepository.GetUserByUsername(User.Identity.Name);

                    if (DateTime.Compare(DateTime.Now, user.OAuthAccessTokenExpiration) < 0)
                    {
                        using (
                            var imap = new ImapClient("imap.gmail.com", user.EmailAddress,
                                user.CurrentOAuthAccessToken, AuthMethods.SaslOAuth, 993, true,
                                true))
                        {
                            imap.SelectMailbox(folderName);
                            foreach (var messageId in messageIds)
                            {
                                imap.MoveMessage(messageId, "[Gmail]/All Mail");
                            }
                            imap.Expunge();
                            successful = true;
                        }
                    }
                }
            }

            return Json(new {Result = successful});
        }
        public JsonResult DeleteMail(string[] messageIds, string folderName)
        {
            var successful = false;
            if (Request.IsAuthenticated)
            {
                using (var uow = new UnitOfWork(GlobalConfig.ConnectionString))
                {
                    var user = uow.UserRepository.GetUserByUsername(User.Identity.Name);

                    if (DateTime.Compare(DateTime.Now, user.OAuthAccessTokenExpiration) < 0)
                    {
                        using (
                            var imap = new ImapClient("imap.gmail.com", user.EmailAddress,
                                user.CurrentOAuthAccessToken, AuthMethods.SaslOAuth, 993, true,
                                true))
                        {
                            imap.SelectMailbox(folderName);
                            foreach (var messageId in messageIds)
                            {
                                try
                                {
                                    imap.MoveMessage(messageId, "[Gmail]/Trash");
                                }
                                // ReSharper disable once EmptyGeneralCatchClause
                                catch (Exception) //Deleting always throws excptions
                                {
                                }
                                finally
                                {
                                    imap.Expunge();
                                }
                            }
                            successful = true;
                        }
                    }
                }
            }

            return Json(new {Result = successful});
        }