Beispiel #1
0
        public bool ReceivedWelcomeKit(DateTime since, string coId, string company)
        {
            Console.WriteLine($"SINCE {since}");
            Console.WriteLine($"{DateTime.Now} BEGIN");
            var inbox = client.Inbox;

            inbox.Open(MailKit.FolderAccess.ReadOnly);
            Console.WriteLine($"{DateTime.Now} OPENED");
            var query = SearchQuery.DeliveredAfter(since)
                        .And(SearchQuery.SubjectContains($"Welcome to GS1 US"))
                        .And(SearchQuery.BodyContains($"Account Number: {coId}"));

            foreach (var uid in inbox.Search(query))
            {
                Console.WriteLine($"{DateTime.Now} MAIL {uid}");
                var message = inbox.GetMessage(uid);
                Console.WriteLine($"{DateTime.Now} GOT MESSAGE");
                var m = Regex.Match(message.HtmlBody, $"Account Number: ([0-9]+)");
                if (m.Success && m.Groups[1].Value == coId)
                {
                    inbox.Close();
                    return(true);
                }
                Console.WriteLine($"{DateTime.Now} NEXT");
            }
            Console.WriteLine($"{DateTime.Now} END");
            inbox.Close();
            return(false);
        }
        private static List <TaxiMessage> LoadMessages(DateTime fromDate)
        {
            var login      = Environment.GetEnvironmentVariable("GMAIL_LOGIN");
            var password   = Environment.GetEnvironmentVariable("GMAIL_PASSWORD");
            var imapClient = new ImapClient();

            imapClient.Connect("imap.gmail.com", 993);
            imapClient.Authenticate(login, password);
            var mailbox = imapClient.Inbox;

            mailbox.Open(FolderAccess.ReadOnly);
            var searchQuery = SearchQuery.SentSince(fromDate)
                              .And(SearchQuery.FromContains("*****@*****.**"))
                              .And(SearchQuery.Or(
                                       SearchQuery.BodyContains(TaxiMessage.ValidStreetNames[0]),
                                       SearchQuery.BodyContains(TaxiMessage.ValidStreetNames[1]))
                                   );
            var messages = mailbox.Search(searchQuery)
                           .Select(id => mailbox.GetMessage(id))
                           .ToList();

            mailbox.Close();
            return(messages.Select(m => new TaxiMessage(m))
                   .Where(m => m.HasOfficeTaxi)
                   .ToList());
        }
Beispiel #3
0
        public void TestArgumentExceptions()
        {
            Assert.Throws <ArgumentNullException> (() => SearchQuery.And(null, SearchQuery.All));
            Assert.Throws <ArgumentNullException> (() => SearchQuery.And(SearchQuery.All, null));
            Assert.Throws <ArgumentNullException> (() => SearchQuery.BccContains(null));
            Assert.Throws <ArgumentException> (() => SearchQuery.BccContains(string.Empty));
            Assert.Throws <ArgumentNullException> (() => SearchQuery.BodyContains(null));
            Assert.Throws <ArgumentException> (() => SearchQuery.BodyContains(string.Empty));
            Assert.Throws <ArgumentNullException> (() => SearchQuery.CcContains(null));
            Assert.Throws <ArgumentException> (() => SearchQuery.CcContains(string.Empty));
            Assert.Throws <ArgumentNullException> (() => SearchQuery.DoesNotHaveCustomFlag(null));
            Assert.Throws <ArgumentException> (() => SearchQuery.DoesNotHaveCustomFlag(string.Empty));
            Assert.Throws <ArgumentNullException> (() => SearchQuery.DoesNotHaveCustomFlags(null));
            Assert.Throws <ArgumentException> (() => SearchQuery.DoesNotHaveFlags(MessageFlags.None));
            Assert.Throws <ArgumentNullException> (() => SearchQuery.Filter(null));
            Assert.Throws <ArgumentException> (() => SearchQuery.Filter(string.Empty));
            Assert.Throws <ArgumentNullException> (() => SearchQuery.FromContains(null));
            Assert.Throws <ArgumentException> (() => SearchQuery.FromContains(string.Empty));
            Assert.Throws <ArgumentNullException> (() => SearchQuery.Fuzzy(null));
            Assert.Throws <ArgumentNullException> (() => SearchQuery.GMailRawSearch(null));
            Assert.Throws <ArgumentException> (() => SearchQuery.GMailRawSearch(string.Empty));
            Assert.Throws <ArgumentNullException> (() => SearchQuery.HasCustomFlag(null));
            Assert.Throws <ArgumentException> (() => SearchQuery.HasCustomFlag(string.Empty));
            Assert.Throws <ArgumentNullException> (() => SearchQuery.HasCustomFlags(null));
            Assert.Throws <ArgumentException> (() => SearchQuery.HasFlags(MessageFlags.None));
            Assert.Throws <ArgumentNullException> (() => SearchQuery.HasGMailLabel(null));
            Assert.Throws <ArgumentException> (() => SearchQuery.HasGMailLabel(string.Empty));
            Assert.Throws <ArgumentNullException> (() => SearchQuery.HeaderContains(null, "text"));
            Assert.Throws <ArgumentException> (() => SearchQuery.HeaderContains(string.Empty, "text"));
            Assert.Throws <ArgumentNullException> (() => SearchQuery.HeaderContains("name", null));
            Assert.Throws <ArgumentOutOfRangeException> (() => SearchQuery.LargerThan(-1));
            Assert.Throws <ArgumentNullException> (() => SearchQuery.MessageContains(null));
            Assert.Throws <ArgumentException> (() => SearchQuery.MessageContains(string.Empty));
            Assert.Throws <ArgumentNullException> (() => SearchQuery.Not(null));
            Assert.Throws <ArgumentOutOfRangeException> (() => SearchQuery.OlderThan(-1));
            Assert.Throws <ArgumentNullException> (() => SearchQuery.Or(null, SearchQuery.All));
            Assert.Throws <ArgumentNullException> (() => SearchQuery.Or(SearchQuery.All, null));
            Assert.Throws <ArgumentOutOfRangeException> (() => SearchQuery.SmallerThan(-1));
            Assert.Throws <ArgumentNullException> (() => SearchQuery.SubjectContains(null));
            Assert.Throws <ArgumentException> (() => SearchQuery.SubjectContains(string.Empty));
            Assert.Throws <ArgumentNullException> (() => SearchQuery.ToContains(null));
            Assert.Throws <ArgumentException> (() => SearchQuery.ToContains(string.Empty));
            Assert.Throws <ArgumentOutOfRangeException> (() => SearchQuery.YoungerThan(-1));
            Assert.Throws <ArgumentNullException> (() => SearchQuery.All.And(null));
            Assert.Throws <ArgumentNullException> (() => SearchQuery.All.Or(null));

            Assert.Throws <ArgumentNullException> (() => new BinarySearchQuery(SearchTerm.And, null, SearchQuery.All));
            Assert.Throws <ArgumentNullException> (() => new BinarySearchQuery(SearchTerm.And, SearchQuery.All, null));
            Assert.Throws <ArgumentNullException> (() => new FilterSearchQuery(null));
            Assert.Throws <ArgumentException> (() => new FilterSearchQuery(string.Empty));
            Assert.Throws <ArgumentNullException> (() => new HeaderSearchQuery(null, "text"));
            Assert.Throws <ArgumentException> (() => new HeaderSearchQuery(string.Empty, "text"));
            Assert.Throws <ArgumentNullException> (() => new HeaderSearchQuery("name", null));
            Assert.Throws <ArgumentNullException> (() => new TextSearchQuery(SearchTerm.BodyContains, null));
            Assert.Throws <ArgumentNullException> (() => new UidSearchQuery(null));
            Assert.Throws <ArgumentException> (() => new UidSearchQuery(new UniqueIdSet()));
            Assert.Throws <ArgumentException> (() => new UidSearchQuery(UniqueId.Invalid));
            Assert.Throws <ArgumentNullException> (() => new UnarySearchQuery(SearchTerm.Not, null));
        }
Beispiel #4
0
        public static void ReadEmail(string Emaild, string password)
        {
            FirstCaller = new List <string>();
            string emailUrl = string.Empty;

            using (var client = new ImapClient())
            {
                // accept all SSL certificates
                client.ServerCertificateValidationCallback = (s, c, h, e) => true;

                client.Connect("imap.gmail.com", 993, true);

                client.Authenticate(Emaild, password);

                // The Inbox folder is always available on all IMAP servers...
                var inbox = client.Inbox;
                inbox.Open(FolderAccess.ReadWrite);
                List <UniqueId> uids = inbox.Search(SearchQuery.BodyContains("follow")).ToList();
                uids.Reverse();
                //uids.OrderByDescending(a => a.CompareTo(uids.Last()));
                foreach (var uid in uids)
                {
                    var msg = inbox.GetMessage(uid);
                    if (msg.TextBody.Contains("follow"))
                    {
                        emailUrl = msg.TextBody;
                    }
                    break;
                }
                //var message = inbox.GetMessage(inbox.Count - 1);


                //emailUrl = message.TextBody;
                string text = Regex.Replace(emailUrl.ToString(),
                                            @"((http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&amp;:/~\+#]*[\w\-\@?^=%&amp;/~\+#])?)",
                                            "<a target='_blank' href='$1'>$1</a>");

                var regex = new Regex("<a [^>]*href=(?:'(?<href>.*?)')|(?:\"(?<href>.*?)\")", RegexOptions.IgnoreCase);
                //var urls = regex.Matches(text).OfType<Match>().Select(m => m.Groups["href"].Value).SingleOrDefault();

                var doc = new HtmlDocument();
                doc.LoadHtml(text);
                var    nodes = doc.DocumentNode.SelectNodes("a[@href]").ToList();
                string temp  = nodes[0].Attributes["href"].Value;
                FirstCaller.Add(temp);
                int count = FirstCaller.Count();
                client.Disconnect(true);
            }
        }
        public ICollection <string> GetHtmlMessages()
        {
            using (var client = new ImapClient())
            {
                client.Connect(_applicationSettings.ImapHost, _applicationSettings.ImapPort, true);
                client.Authenticate(_applicationSettings.ImapLogin, _applicationSettings.ImapPassword);

                var inbox = client.Inbox;
                inbox.Open(FolderAccess.ReadOnly);

                var searchResult = inbox.Search(SearchOptions.All, SearchQuery.BodyContains("Вы заказали такси").And(SearchQuery.BodyContains("Отчёт о поездке")).And(SearchQuery.FromContains("*****@*****.**")));
                var messages     = searchResult.UniqueIds.Select(uid => inbox.GetMessage(uid).HtmlBody).ToList();
                client.Disconnect(true);

                return(messages);
            }
        }
        /// <summary>
        /// Returns the query object used to search the email body text,
        /// derived from each line of the input text file
        /// </summary>
        /// <param name="fileName">The relative path of the desired text file</param>
        /// <param name="retrospect">Boolean indicating if query needs (and contains retrospect) appended</param>
        /// <returns></returns>
        public static SearchQuery GetSearchQuery(string fileName, bool retrospect)
        {
            string[] queries = File.ReadAllLines(fileName);

            // Get first search term
            SearchQuery search = SearchQuery.BodyContains(queries[0]);

            // Get consecutive search terms and concatenate them into a large or statement
            for (int i = 1; i < queries.Length; i++)
            {
                search = search.Or(SearchQuery.BodyContains(queries[i]));
            }

            // Add a check for the sendee being the retrospect client if retrospect = true
            search = retrospect ? search.And(SearchQuery.FromContains("NewDesktop Retrospect NAS")) : search;

            return(search);
        }
        private MimeMessage[] search(ImapClient client, string pattern)
        {
            int index = 0;
            var query = SearchQuery.SubjectContains(pattern).Or(SearchQuery.BodyContains(pattern));
            var inbox = client.Inbox;

            inbox.Open(FolderAccess.ReadWrite);

            int founded = inbox.Search(query).Count;

            MimeMessage[] foundMessages = new MimeMessage[founded];


            foreach (var uid in inbox.Search(query))
            {
                var message = inbox.GetMessage(uid);
                foundMessages[index] = message;
                index++;
            }

            return(foundMessages);
        }
        public override void RunCommand(object sender)
        {
            var engine = (IAutomationEngineInstance)sender;

            string vIMAPHost                = v_IMAPHost.ConvertUserVariableToString(engine);
            string vIMAPPort                = v_IMAPPort.ConvertUserVariableToString(engine);
            string vIMAPUserName            = v_IMAPUserName.ConvertUserVariableToString(engine);
            string vIMAPPassword            = ((SecureString)v_IMAPPassword.ConvertUserVariableToObject(engine, nameof(v_IMAPPassword), this)).ConvertSecureStringToString();
            string vIMAPSourceFolder        = v_IMAPSourceFolder.ConvertUserVariableToString(engine);
            string vIMAPFilter              = v_IMAPFilter.ConvertUserVariableToString(engine);
            string vIMAPMessageDirectory    = v_IMAPMessageDirectory.ConvertUserVariableToString(engine);
            string vIMAPAttachmentDirectory = v_IMAPAttachmentDirectory.ConvertUserVariableToString(engine);

            using (var client = new ImapClient())
            {
                client.ServerCertificateValidationCallback = (sndr, certificate, chain, sslPolicyErrors) => true;
                client.SslProtocols = SslProtocols.None;

                using (var cancel = new CancellationTokenSource())
                {
                    try
                    {
                        client.Connect(vIMAPHost, int.Parse(vIMAPPort), true, cancel.Token);                         //SSL
                    }
                    catch (Exception)
                    {
                        client.Connect(vIMAPHost, int.Parse(vIMAPPort));                         //TLS
                    }

                    client.AuthenticationMechanisms.Remove("XOAUTH2");
                    client.Authenticate(vIMAPUserName, vIMAPPassword, cancel.Token);

                    IMailFolder toplevel    = client.GetFolder(client.PersonalNamespaces[0]);
                    IMailFolder foundFolder = FindFolder(toplevel, vIMAPSourceFolder);

                    if (foundFolder != null)
                    {
                        foundFolder.Open(FolderAccess.ReadWrite, cancel.Token);
                    }
                    else
                    {
                        throw new Exception("Source Folder not found");
                    }

                    SearchQuery query;
                    if (vIMAPFilter.ToLower() == "none")
                    {
                        query = SearchQuery.All;
                    }
                    else if (!string.IsNullOrEmpty(vIMAPFilter.Trim()))
                    {
                        query = SearchQuery.MessageContains(vIMAPFilter)
                                .Or(SearchQuery.SubjectContains(vIMAPFilter))
                                .Or(SearchQuery.FromContains(vIMAPFilter))
                                .Or(SearchQuery.BccContains(vIMAPFilter))
                                .Or(SearchQuery.BodyContains(vIMAPFilter))
                                .Or(SearchQuery.CcContains(vIMAPFilter))
                                .Or(SearchQuery.ToContains(vIMAPFilter));
                    }
                    else
                    {
                        throw new NullReferenceException("Filter not specified");
                    }

                    if (v_IMAPGetUnreadOnly == "Yes")
                    {
                        query = query.And(SearchQuery.NotSeen);
                    }

                    var filteredItems = foundFolder.Search(query, cancel.Token);

                    List <MimeMessage> outMail = new List <MimeMessage>();

                    foreach (UniqueId uid in filteredItems)
                    {
                        if (v_IMAPMarkAsRead == "Yes")
                        {
                            foundFolder.AddFlags(uid, MessageFlags.Seen, true);
                        }

                        MimeMessage message = foundFolder.GetMessage(uid, cancel.Token);

                        if (v_IMAPSaveMessagesAndAttachments == "Yes")
                        {
                            ProcessEmail(message, vIMAPMessageDirectory, vIMAPAttachmentDirectory);
                        }

                        message.MessageId = $"{vIMAPSourceFolder}#{uid}";
                        outMail.Add(message);
                    }
                    outMail.StoreInUserVariable(engine, v_OutputUserVariableName, nameof(v_OutputUserVariableName), this);

                    client.Disconnect(true, cancel.Token);
                    client.ServerCertificateValidationCallback = null;
                }
            }
        }
        public void connect()
        {
            using (ImapClient client = new ImapClient())
            //  using (PopClient pop = new PopClient("pop.gmail.com"))
            {
                int pops = 1;
                // Connect and login.
                client.Connect("imap.gmail.com", 993, true);
                Console.WriteLine("Connected.");

                client.Authenticate(name, pass);
                Console.WriteLine("Authenticated.");

                var inbox = client.Inbox;
                inbox.Open(MailKit.FolderAccess.ReadOnly);
                int count = inbox.Count;

                // Check if there are any messages available on the server.
                if (inbox.Count == 0)
                {
                    return;
                }

                var query = SearchQuery.DeliveredAfter(DateTime.Parse("2020-03-11")).And(SearchQuery.BodyContains("is inviting you to a scheduled Zoom meeting."));

                foreach (var uid in inbox.Search(query))
                {
                    // Download message.
                    MimeMessage message = inbox.GetMessage(uid);

                    // Display message sender and subject.
                    //Console.WriteLine();
                    //Console.WriteLine($"From: {message.From}");
                    //Console.WriteLine($"Subject: {message.Subject}");
                    emails.Append($"From: {message.From}");
                    emails.Append($"Subject: {message.Subject}");

                    // Display message body.
                    // Console.WriteLine("Body:");
                    string body = string.IsNullOrEmpty(message.HtmlBody) ?
                                  message.TextBody :
                                  message.HtmlBody;


                    MatchCollection matches   = ZoomId.Matches(body);
                    MatchCollection joinlinks = ZoomJoinUrl.Matches(body);
                    long            lid       = 0;
                    string          link      = "";
                    if (matches.Count == 0 || joinlinks.Count == 0)
                    {
                        pops++;
                        continue;
                    }
                    if (matches.Count > 0)
                    {
                        Match  match = ZoomId.Matches(body)[0];
                        string id    = match.Value;
                        id  = id.Replace(" ", "");
                        lid = long.Parse(id);
                    }
                    if (joinlinks.Count > 0)
                    {
                        Match linksys = ZoomJoinUrl.Matches(body)[0];
                        link = linksys.Value;
                    }

                    MatchCollection times = ZoomTime.Matches(body);
                    DateTime        time  = new DateTime();
                    if (times.Count > 0)
                    {
                        Match match = ZoomTime.Matches(body)[0];
                        time = DateTime.ParseExact(match.Groups[1].Value, "MMM d, yyyy hh:mm tt", CultureInfo.InvariantCulture);
                    }

                    var meeting = new Meeting()
                    {
                        Id        = lid,
                        JoinUrl   = link,
                        StartTime = time,
                    };

                    Console.WriteLine(lid);

                    meetings.Add(meeting);
                    emails.Append(body);
                }
            }
        }
Beispiel #10
0
        /// <summary>
        /// Gets mail headers
        /// </summary>
        /// <param name="searchTerm"></param>
        /// <returns></returns>
        public static ObservableCollection <MailHeader> GetMailHeaders(string searchTerm)
        {
            ObservableCollection <MailHeader> headerList = new ObservableCollection <MailHeader>();

            if (LoggedIn)
            {
                var inbox = client.Inbox;
                inbox.Open(FolderAccess.ReadWrite);

                //Debug.WriteLine("Total messages: {0}", inbox.Count);

                var orderBy = new[] { OrderBy.ReverseArrival };

                List <IMessageSummary> msgList = null;

                //If the searchTerm isnt null or empty, search for messages matching the searchterm and sort them
                //in reverse arrival order
                if (!string.IsNullOrEmpty(searchTerm))
                {
                    //Search query
                    var query = (SearchQuery.SubjectContains(searchTerm)).Or(SearchQuery.BodyContains(searchTerm));

                    //Searches the mail folder using the query
                    var uidList = inbox.Search(query);

                    if (uidList.Count != 0)
                    {
                        //Fetches the messagesummaries of uidList
                        msgList = inbox.Fetch(uidList, MessageSummaryItems.Envelope | MessageSummaryItems.UniqueId).ToList();

                        //Sorts msgList in reverse arrival sort order
                        MessageSorter.Sort(msgList, orderBy);

                        isMailSearchSuccess = true;
                    }
                    else
                    {
                        isMailSearchSuccess = false;
                        return(null);
                    }
                }
                //If the searchTerm is null or empty, fetch all messagesummaries and sort them in
                //reverse arrival order
                else
                {
                    //Fetches all messagesummaries
                    msgList = inbox.Fetch(0, -1, MessageSummaryItems.Envelope | MessageSummaryItems.UniqueId).ToList();

                    if (msgList.Count != 0)
                    {
                        //Sorts msgList in reverse arrival sort order
                        MessageSorter.Sort(msgList, orderBy);
                    }
                    else
                    {
                        return(null);
                    }
                }

                foreach (MessageSummary summary in msgList)
                {
                    MailHeader mailHeader = ConvertMessageSummary(summary);
                    headerList.Add(mailHeader);
                }
            }
            else
            {
                if (Login())
                {
                    GetMailHeaders(searchTerm);
                }
            }
            return(headerList);
        }
        public static void ShowEmailsByFolderByDate(string folderName, string searchedString)
        {
            using (var client = new ImapClient())
            {
                // For demo-purposes, accept all SSL certificates
                client.ServerCertificateValidationCallback = (s, c, h, e) => true;

                client.Connect("imap.gmail.com", 993, true);

                // Note: since we don't have an OAuth2 token, disable
                // the XOAUTH2 authentication mechanism.
                client.AuthenticationMechanisms.Remove("XOAUTH2");

                client.Authenticate(SendEmailMIMEKIT.selfUserName, SendEmailMIMEKIT.selfKeyWord);

                // Get the first personal namespace and list the toplevel folders under it.
                var         personal = client.GetFolder(client.PersonalNamespaces[0]);
                IMailFolder searchedFolder;
                DataManager.emailList.Clear();
                foreach (var folder in personal.GetSubfolders(false))
                {
                    if (folder.Name.Equals(folderName))
                    {
                        searchedFolder = folder;
                        searchedFolder.Open(FolderAccess.ReadOnly);

                        // let's search for all messages received after Jan 12, 2013 with "MailKit" in the subject...
                        var query = SearchQuery.DeliveredAfter(DateTime.Parse("2013-01-12"))
                                    .And(SearchQuery.SubjectContains(searchedString)).And(SearchQuery.Seen)
                                    .And(SearchQuery.BodyContains(searchedString)).And(SearchQuery.Seen);

                        foreach (var uid in searchedFolder.Search(query))
                        {
                            var message = searchedFolder.GetMessage(uid);
                            Console.WriteLine("[match] {0}: {1}", uid, message.Subject);
                            Email tempEmail = new Email(message);
                            DataManager.emailList.Add(tempEmail, null);
                        }
                    }
                    foreach (var foldery in folder.GetSubfolders(false))
                    {
                        if (foldery.Name.Equals(folderName))
                        {
                            searchedFolder = foldery;
                            searchedFolder.Open(FolderAccess.ReadOnly);

                            // let's search for all messages received after Jan 12, 2013 with "MailKit" in the subject...
                            var query = SearchQuery.DeliveredAfter(DateTime.Parse("2013-01-12"))
                                        .And(SearchQuery.SubjectContains(searchedString)).And(SearchQuery.Seen);

                            foreach (var uid in searchedFolder.Search(query))
                            {
                                var message = searchedFolder.GetMessage(uid);
                                Console.WriteLine("[match] {0}: {1}", uid, message.Subject);
                                Email tempEmail = new Email(message);
                                DataManager.emailList.Add(tempEmail, null);
                            }
                        }
                    }
                }
                client.Disconnect(true);
            }
        }
Beispiel #12
0
        public int Execute()
        {
            //IMAPServerName = "imap.gmail.com";
            //UserName = "******";
            //Password = "";
            //Port = 993;
            //markAsRead = true;


            try
            {
                var client = VariableStorage.EmailVar[EmailtoSaveVar].Item2;

                if (!client.IsConnected)
                {
                    client.Connect(IMAPServerName, Port, SecureSocketOptions.SslOnConnect);


                    client.AuthenticationMechanisms.Remove("XOAUTH2");

                    client.Authenticate(UserName, Password);
                }

                var working_folder = client.GetFolder(VariableStorage.EmailVar[EmailtoSaveVar].Item3);
                working_folder.Open(FolderAccess.ReadOnly);

                Dictionary <string, IMailFolder> retrievedFolder = new Dictionary <string, IMailFolder>();

                SearchResults results = new SearchResults();

                // search from folder
                if (RetrieveSchema == 0)
                {
                    results = working_folder.Search(SearchOptions.All, SearchQuery.Not(SearchQuery.Seen).And((SearchQuery.SubjectContains(SubjectSearch).Or(SearchQuery.ToContains(ToSearch).Or(SearchQuery.FromContains(FromSearch).Or(SearchQuery.BodyContains(BodySearch)))))));
                }

                else if (RetrieveSchema == 1)
                {
                    results = working_folder.Search(SearchOptions.All, SearchQuery.SubjectContains(SubjectSearch).Or(SearchQuery.ToContains(ToSearch).Or(SearchQuery.FromContains(FromSearch).Or(SearchQuery.BodyContains(BodySearch)))));
                }



                if (VariableStorage.EmailVar.ContainsKey(EmailtoSaveVar))
                {
                    VariableStorage.EmailVar.Remove(EmailtoSaveVar);
                }
                VariableStorage.EmailVar.Add(EmailtoSaveVar, Tuple.Create(this.ID, client, FolderPath, (object)results.UniqueIds));



                // marks as read
                if (markAsRead)
                {
                    foreach (var uniqueId in results.UniqueIds)
                    {
                        var message = working_folder.GetMessage(uniqueId);
                        working_folder.AddFlags(uniqueId, MessageFlags.Seen, true);
                    }
                }



                // attachment download
                if (AttchmentSchemaIndex == 1)
                {
                    foreach (UniqueId uid in results.UniqueIds)
                    {
                        MimeMessage message = client.Inbox.GetMessage(uid);

                        foreach (MimeEntity attachment in message.Attachments)
                        {
                            var fileName = attachment.ContentDisposition?.FileName ?? attachment.ContentType.Name;

                            using (var stream = System.IO.File.Create(@AttchmentPath + fileName))
                            {
                                if (attachment is MessagePart)
                                {
                                    var rfc822 = (MessagePart)attachment;

                                    rfc822.Message.WriteTo(stream);
                                }
                                else
                                {
                                    var part = (MimeKit.MimePart)attachment;

                                    part.ContentObject.DecodeTo(stream);
                                }
                            }
                        }
                    }
                }



                return(1);
            }
            catch (Exception ex)
            {
                return(0);
            }
        }
Beispiel #13
0
        public void TestArgumentExceptions()
        {
            Assert.Throws <ArgumentNullException> (() => SearchQuery.And(null, SearchQuery.All));
            Assert.Throws <ArgumentNullException> (() => SearchQuery.And(SearchQuery.All, null));
            Assert.Throws <ArgumentNullException> (() => SearchQuery.AnnotationsContain(null, AnnotationAttribute.Value, "value"));
            Assert.Throws <ArgumentNullException> (() => SearchQuery.AnnotationsContain(AnnotationEntry.AltSubject, null, "value"));
            Assert.Throws <ArgumentException> (() => SearchQuery.AnnotationsContain(AnnotationEntry.AltSubject, AnnotationAttribute.Size, "value"));
            Assert.Throws <ArgumentNullException> (() => SearchQuery.BccContains(null));
            Assert.Throws <ArgumentException> (() => SearchQuery.BccContains(string.Empty));
            Assert.Throws <ArgumentNullException> (() => SearchQuery.BodyContains(null));
            Assert.Throws <ArgumentException> (() => SearchQuery.BodyContains(string.Empty));
            Assert.Throws <ArgumentNullException> (() => SearchQuery.CcContains(null));
            Assert.Throws <ArgumentException> (() => SearchQuery.CcContains(string.Empty));
            Assert.Throws <ArgumentNullException> (() => SearchQuery.DoesNotHaveCustomFlag(null));
            Assert.Throws <ArgumentException> (() => SearchQuery.DoesNotHaveCustomFlag(string.Empty));
            Assert.Throws <ArgumentNullException> (() => SearchQuery.DoesNotHaveCustomFlags(null));
            Assert.Throws <ArgumentException> (() => SearchQuery.DoesNotHaveCustomFlags(new string[0]));
            Assert.Throws <ArgumentException> (() => SearchQuery.DoesNotHaveFlags(MessageFlags.None));
            Assert.Throws <ArgumentNullException> (() => SearchQuery.Filter(null));
            Assert.Throws <ArgumentException> (() => SearchQuery.Filter(string.Empty));
            Assert.Throws <ArgumentNullException> (() => SearchQuery.FromContains(null));
            Assert.Throws <ArgumentException> (() => SearchQuery.FromContains(string.Empty));
            Assert.Throws <ArgumentNullException> (() => SearchQuery.Fuzzy(null));
            Assert.Throws <ArgumentNullException> (() => SearchQuery.GMailRawSearch(null));
            Assert.Throws <ArgumentException> (() => SearchQuery.GMailRawSearch(string.Empty));
            Assert.Throws <ArgumentNullException> (() => SearchQuery.HasCustomFlag(null));
            Assert.Throws <ArgumentException> (() => SearchQuery.HasCustomFlag(string.Empty));
            Assert.Throws <ArgumentNullException> (() => SearchQuery.HasCustomFlags(null));
            Assert.Throws <ArgumentException> (() => SearchQuery.HasCustomFlags(new string[0]));
            Assert.Throws <ArgumentException> (() => SearchQuery.HasFlags(MessageFlags.None));
            Assert.Throws <ArgumentNullException> (() => SearchQuery.HasKeyword(null));
            Assert.Throws <ArgumentException> (() => SearchQuery.HasKeyword(string.Empty));
            Assert.Throws <ArgumentNullException> (() => SearchQuery.HasKeywords(null));
            Assert.Throws <ArgumentException> (() => SearchQuery.HasKeywords(new string[0]));
            Assert.Throws <ArgumentException> (() => SearchQuery.HasKeywords(new string[] { "keyword", null }));
            Assert.Throws <ArgumentException> (() => SearchQuery.NotFlags(MessageFlags.None));
            Assert.Throws <ArgumentNullException> (() => SearchQuery.NotKeyword(null));
            Assert.Throws <ArgumentException> (() => SearchQuery.NotKeyword(string.Empty));
            Assert.Throws <ArgumentNullException> (() => SearchQuery.NotKeywords(null));
            Assert.Throws <ArgumentException> (() => SearchQuery.NotKeywords(new string[0]));
            Assert.Throws <ArgumentException> (() => SearchQuery.NotKeywords(new string [] { "keyword", null }));
            Assert.Throws <ArgumentNullException> (() => SearchQuery.HasGMailLabel(null));
            Assert.Throws <ArgumentException> (() => SearchQuery.HasGMailLabel(string.Empty));
            Assert.Throws <ArgumentNullException> (() => SearchQuery.HeaderContains(null, "text"));
            Assert.Throws <ArgumentException> (() => SearchQuery.HeaderContains(string.Empty, "text"));
            Assert.Throws <ArgumentNullException> (() => SearchQuery.HeaderContains("name", null));
            Assert.Throws <ArgumentOutOfRangeException> (() => SearchQuery.LargerThan(-1));
            Assert.Throws <ArgumentNullException> (() => SearchQuery.MessageContains(null));
            Assert.Throws <ArgumentException> (() => SearchQuery.MessageContains(string.Empty));
            Assert.Throws <ArgumentNullException> (() => SearchQuery.Not(null));
            Assert.Throws <ArgumentOutOfRangeException> (() => SearchQuery.OlderThan(-1));
            Assert.Throws <ArgumentNullException> (() => SearchQuery.Or(null, SearchQuery.All));
            Assert.Throws <ArgumentNullException> (() => SearchQuery.Or(SearchQuery.All, null));
            Assert.Throws <ArgumentOutOfRangeException> (() => SearchQuery.SmallerThan(-1));
            Assert.Throws <ArgumentNullException> (() => SearchQuery.SubjectContains(null));
            Assert.Throws <ArgumentException> (() => SearchQuery.SubjectContains(string.Empty));
            Assert.Throws <ArgumentNullException> (() => SearchQuery.ToContains(null));
            Assert.Throws <ArgumentException> (() => SearchQuery.ToContains(string.Empty));
            Assert.Throws <ArgumentOutOfRangeException> (() => SearchQuery.YoungerThan(-1));
            Assert.Throws <ArgumentNullException> (() => SearchQuery.All.And(null));
            Assert.Throws <ArgumentNullException> (() => SearchQuery.All.Or(null));

            Assert.Throws <ArgumentNullException> (() => new BinarySearchQuery(SearchTerm.And, null, SearchQuery.All));
            Assert.Throws <ArgumentNullException> (() => new BinarySearchQuery(SearchTerm.And, SearchQuery.All, null));
            Assert.Throws <ArgumentNullException> (() => new FilterSearchQuery(null));
            Assert.Throws <ArgumentException> (() => new FilterSearchQuery(string.Empty));
            Assert.Throws <ArgumentException> (() => new FilterSearchQuery(MetadataTag.Create("/dev/null")));
            Assert.Throws <ArgumentNullException> (() => new HeaderSearchQuery(null, "text"));
            Assert.Throws <ArgumentException> (() => new HeaderSearchQuery(string.Empty, "text"));
            Assert.Throws <ArgumentNullException> (() => new HeaderSearchQuery("name", null));
            Assert.Throws <ArgumentNullException> (() => new TextSearchQuery(SearchTerm.BodyContains, null));
            Assert.Throws <ArgumentNullException> (() => new UidSearchQuery(null));
            Assert.Throws <ArgumentException> (() => new UidSearchQuery(new UniqueIdSet()));
            Assert.Throws <ArgumentException> (() => new UidSearchQuery(UniqueId.Invalid));
            Assert.Throws <ArgumentNullException> (() => new UnarySearchQuery(SearchTerm.Not, null));
        }
Beispiel #14
0
        private async void GetMessgesContainingMenuClick(Object sender, System.EventArgs e)
        {
            SearchRequestStringsWindow mySearchString = new SearchRequestStringsWindow();

            if (mySearchString.ShowDialog() == true)
            {
                if (mySearchString.SortRequestTbx.Text != "")
                {
                    query            = SearchQuery.SubjectContains(mySearchString.SortRequestTbx.Text).Or(SearchQuery.BodyContains(mySearchString.SortRequestTbx.Text));
                    MessagesListTemp = await OperateData.Operating.CustomsDownloadBodyPartsAsync(OperateData.Operating.AccountsUpload()[IndexOfDynamicList], FolderName, query);

                    messagesDetailsDataGrid.ItemsSource = MessagesListTemp;
                    if (MessagesListTemp.Count > 0)
                    {
                        AddingMessagePartsToWindow(MessagesListTemp[0]);
                    }
                    else
                    {
                        MessageBox.Show("Selected folder is empty!");
                    }
                }
                else
                {
                    MessageBox.Show("Enter a Request to Sort Messages!");
                }
            }
        }