public static List<SourcedAdoNetLog> ImapGetLogEmails(int numEmails = 50, string email = "*****@*****.**",
            string pass = "******")
        {
            var client = new ImapX.ImapClient("imap.gmail.com", 993, true);
            client.Connect();
            client.Login(email, pass);
            var messages = client.Folders["INBOX"].Search("ALL", MessageFetchMode.Body, numEmails);

            List<SourcedAdoNetLog> allLogs = new List<SourcedAdoNetLog>();

            foreach (var imapMessage in messages)
            {
                var message = imapMessage.Body.Text;
                try
                {
                    var json = message.FromJson<AdoNetLog>();
                    SourcedAdoNetLog srcLog = new SourcedAdoNetLog
                    {
                        Source = email,
                        Date = json.Date,
                        Level = json.Level,
                        Logger = json.Logger,
                        Message = json.Message,
                        Exception = json.Exception,
                    };
                    allLogs.Add(srcLog);
                }
                catch (Exception e)
                {
                    Log.Error(String.Format("Failed to parse an AdoNetLog out from the following email body:\n{0}", message), e);
                }
            }
            return allLogs;
        }
        public bool Connect()
        {
            this._imapClient = new ImapX.ImapClient(this.Host, this.Port);
            this._imapClient.Connect();
            this._imapClient.Login(User, Password);

            var connectionResult = this._imapClient.IsConnected;

            return(connectionResult);
        }
Exemple #3
0
        private void ReloadMessages()
        {
            imap.SelectFolder(foldersTreeView.SelectedNode.Text);

            totalNumberToolStripStatusLabel.Text  = imap.GetMessageCount().ToString();
            unseenNumberToolStripStatusLabel.Text = imap.GetUnseenMessageCount().ToString();

            var list     = imap.GetListMessages();
            var messages = new List <string>();

            foreach (var item in list)
            {
                //messages.Add(imap.GetMessage(item.Value));
            }

            _logger.Add(messages);

            maillistDataGridView.Rows.Clear();

            // f*****g unsafe!!
            _client = new ImapX.ImapClient(settings.IMAPServer, Convert.ToInt32(settings.IMAPPort), settings.IMAPSSL, validateServerCertificate: true);
            _client.Behavior.AutoPopulateFolderMessages = true;

            if (_client.Connect())
            {
                if (_client.Login(settings.Username, settings.Password))
                {
                    var folderName = foldersTreeView.SelectedNode.Text;
                    if (folderName == (string)Properties.Resources.ResourceManager.GetObject("Inbox", CultureInfo.CurrentCulture))
                    {
                        folderName = "INBOX";
                    }

                    _messages = _client.Folders[folderName].Search();

                    maillistDataGridView.Rows.Clear();

                    foreach (var item in _messages)
                    {
                        maillistDataGridView.Rows.Add(item.UId.ToString(), item.Subject, item.From.Address);

                        System.IO.Directory.CreateDirectory(folderPath);

                        foreach (var file in item.Attachments)
                        {
                            file.Download();
                            file.Save(folderPath);
                        }
                    }
                }
            }
        }
Exemple #4
0
        private int polaczZMailem()
        {
            if (zalogowanyNauczyciel.Email.Length == 0)
            {
                return(-1);
            }
            ImapX.ImapClient klient = new ImapX.ImapClient("imap.gmail.com", 993, true, true);
            bool             result = klient.Connect();

            if ((t_loginMail.Text.Length == 0) || (t_hasloMail.Text.Length == 0))
            {
                return(-1);
            }
            if (result)
            {
                return(Convert.ToInt32(klient.Login(t_loginMail.Text + @"@gmail.com", t_hasloMail.Text)));
            }
            else
            {
                return(-1);
            }
        }
Exemple #5
0
        static void Main(string[] args)
        {
            try
            {
                if (!System.IO.Directory.Exists(destination))
                {
                    System.IO.Directory.CreateDirectory(destination);
                }

                System.IO.Directory.SetCurrentDirectory(destination);
            }
            catch (Exception)
            {
                System.Console.WriteLine("Folder '" + destination + "' does not exist.");
                return;
            }

            ImapX.ImapClient client;
            try
            {
                client = new ImapX.ImapClient("imap.gmail.com", 993, true);
                client.Connection();
                Console.WriteLine("Connected to Gmail IMAP.");
            }
            catch
            {
                Console.WriteLine("Connection to Gmail IMAP failed.");
                return;
            }

            try
            {
                if (!client.LogIn(user, pass))
                {
                    throw new Exception();
                }
                Console.WriteLine("Logged in as " + user + ".");
            }
            catch
            {
                Console.WriteLine("Failed to login.");
                return;
            }

            ImapX.MessageCollection messages;
            try
            {
                messages = client.Folders["INBOX"].Messages;
                messages.Reverse();
            }
            catch
            {
                Console.WriteLine("Fetching messages failed.");
                return;
            }

            try
            {
                processMessages(messages);
            }
            catch
            {
                Console.WriteLine("Processing messages failed.");
                return;
            }
        }
        private void loadMailFeed(String selectedPath)
        {
            try
            {
                ImapX.ImapClient client = new ImapX.ImapClient(Settings.Default.IMAPServer, Settings.Default.IMAPPort, Settings.Default.IMAPUseSSL);
                bool result = client.Connection();
                if (result)
                {
                    result = client.LogIn(Settings.Default.Username, Settings.Default.Password);

                    if (result)
                    {

                        this.Dispatcher.Invoke((Action)delegate
                        {
                            tbxStatus.AppendText(Environment.NewLine + "Log-on successful");
                        });

                        bool foundSomeMail = false;

                        bool hasSexxyFolder = false;

                        if (client.Folders["SexxyFeeds"] != null)
                            hasSexxyFolder = true;
                        else
                            if (client.CreateFolder("SexxyFeeds"))
                            hasSexxyFolder = true;

                        var folder = client.Folders[selectedPath];

                        foreach (ImapX.Message m in folder.Messages)
                        {
                            m.ProcessFlags();

                            if (!m.Flags.Contains("\\Seen")) //new mail
                            {
                                m.ProcessHeader();

                                if (hasSexxyFolder)
                                    folder.CopyMessageToFolder(m, client.Folders["SexxyFeeds"]);

                                // m.Process(); -- processes entire mail! chewing up bandwidth -- good only if u need entire mail body

                                var feedItem = String.Format("From {0} : {1}", m.From[0].DisplayName, m.Subject);

                                this.Dispatcher.Invoke((Action)delegate
                                  {

                                      lbxFeed.Items.Add(feedItem);
                                      lbxFeed.ScrollIntoView(feedItem);
                                  });

                                SexxySpeakFeed(feedItem);
                                while (waitForPlayToEnd) ;

                                foundSomeMail = true;

                                /*if (m.Subject == "test email with 3 attachments (txt, png, wav)")
                                {
                                    tbxStatus.AppendText(Environment.NewLine + Environment.NewLine + "Found email in question..." +
                                        Environment.NewLine + Environment.NewLine);
                                    string path = Application.StartupPath + "\\email\\";
                                    string filename = "TxtPngWav";
                                    //comment-out following line if you don't want to d/l the actual email
                                    m.SaveAsEmlToFile(path, filename);
                                    //use above line, and comment out the following if(){}, if you prefer to download the whole
                                    //email in .eml format
                                    if (m.Attachments.Count > 0)
                                    {
                                        for (int i = 0; i < m.Attachments.Count; i++)
                                        {
                                            m.Attachments[i].SaveFile(path);
                                            tbxStatus.AppendText("Saved attachment #" + (i + 1).ToString());
                                            tbxStatus.AppendText(Environment.NewLine + Environment.NewLine);
                                        }
                                    }
                                }*/
                            }

                            //meaning this folder is meant to only hold mail temporary so it can be captured by SexxyMail
                            //thus we delete it from here once it has been seen
                            if (selectedPath == Settings.Default.IMAPMailRouterFolder)
                            {
                                folder.DeleteMessage(m);
                            }
                        }

                        if (foundSomeMail)
                        {
                            SexxySpeakFeed(String.Format("SexxyFeeds for {0} comes to an end. {1}.", Settings.Default.MailServerName,Greetings()));
                            while (waitForPlayToEnd) ;
                        }

                        this.Dispatcher.Invoke((Action)delegate
                        {
                            tbxStatus.AppendText(Environment.NewLine + "Reading Messages Over!");
                            tbxStatus.ScrollToEnd();
                        });

                        waitForReadSessionToEnd = false;

                    }
                }
                else
                {

                    this.Dispatcher.Invoke((Action)delegate
                    {
                        tbxStatus.AppendText(Environment.NewLine + "connection failed");
                        tbxStatus.ScrollToEnd();

                        SexxySpeakFeed(String.Format("SexxyFeeds was denied access to {0} Servers!", Settings.Default.MailServerName));
                        while (waitForPlayToEnd) ;

                        waitForReadSessionToEnd = false;
                    });

                }
            }
            catch (Exception ex)
            {

                this.Dispatcher.Invoke((Action)delegate
                {
                    tbxStatus.AppendText(String.Format("\r\n{0}", ex.Message));
                    tbxStatus.ScrollToEnd();
                });

                waitForReadSessionToEnd = false;
            }
        }
        private void PrepareMail()
        {
            this.Dispatcher.Invoke((Action)delegate
            {
                comboPaths.Items.Clear();
            });

            //greet the owner
            SexxySpeakFeed(String.Format("{0} {1}!",Greetings(),Settings.Default.Owner));
            while (waitForPlayToEnd) ;

            ImapX.ImapClient client = new ImapX.ImapClient(Settings.Default.IMAPServer, Settings.Default.IMAPPort, Settings.Default.IMAPUseSSL);
            bool result = client.Connection();
            if (result)
            {
                result = client.LogIn(Settings.Default.Username, Settings.Default.Password);

                if (result)
                {

                    this.Dispatcher.Invoke((Action)delegate
                    {
                        tbxStatus.AppendText(Environment.NewLine + "Log-on successful");
                    });

                    SexxySpeakFeed(String.Format("Access to {0} Servers was Granted.",Settings.Default.MailServerName));
                    while (waitForPlayToEnd) ;

                    ImapX.FolderCollection folders = client.Folders;

                    foreach (var folder in folders)
                        this.Dispatcher.Invoke((Action)delegate
                        {
                            comboPaths.Items.Add(folder.Name);
                        });

                    SexxySpeakFeed(String.Format("Please select a {0} Path for us to get Rocking!",Settings.Default.MailServerName));
                    while (waitForPlayToEnd) ;
                }
            }
            else
            {

                this.Dispatcher.Invoke((Action)delegate
                {
                    tbxStatus.AppendText(Environment.NewLine + "connection failed");

                    SexxySpeakFeed(String.Format("SexxyFeeds was denied access to {0} Servers!",Settings.Default.MailServerName));
                });
                while (waitForPlayToEnd) ;

            }
        }
Exemple #8
0
                protected override bool Do()
                {
                    int MaxCount  = 3;
                    int CurrCount = 0;

                    Action("Подключение к почте", MaxCount, CurrCount++);
                    lines.AppendLine(DateTime.Now.ToString() + " - подключение к почте");

                    ImapX.ImapClient Client;

                    if (Settings.AutoCrypto)
                    {
                        Client = new ImapX.ImapClient(Settings.MailImap, Settings.MailPort, Settings.AutoCrypto);
                    }
                    else
                    {
                        Client = new ImapX.ImapClient(Settings.MailImap, Settings.MailPort, Settings.MailSecure);
                    }

                    if (!Client.Connect())
                    {
                        Action("Подключение к почте не удалось: проверьте настройки подключения либо сервер не доступен", MaxCount, CurrCount++);
                        lines.AppendLine(DateTime.Now.ToString() + " - подключение к почте не удалось");
                        return(true);
                    }
                    if (!Client.Login(Settings.MailName, Settings.MailPass))
                    {
                        Action("Подключение к почте не удалось: проверьте логин и/или пароль", MaxCount, CurrCount++);
                        lines.AppendLine(DateTime.Now.ToString() + " - подключение к почте не удалось");
                        return(true);
                    }

                    MaxCount++;
                    Action("Поиск обновлений", MaxCount, CurrCount++);
                    lines.AppendLine(DateTime.Now.ToString() + " - успешное подключение к почте");

                    var SearchedSubject = System.IO.Path.GetFileNameWithoutExtension(Settings.FileName);
                    //var messages = Client.Folders.Inbox.Search("CHARSET UTF-8 UNSEEN SUBJECT {" + Encoding.GetEncoding("UTF-8").GetByteCount(SearchedSubject) + "}\r\n" + SearchedSubject, ImapX.Enums.MessageFetchMode.Headers).ToList();
                    var messages = Client.Folders.Inbox.Search("UNSEEN", ImapX.Enums.MessageFetchMode.Headers).ToList();

                    MaxCount += messages.Count + 3;

                    Action("Сканирование писем", MaxCount, CurrCount++);

                    int LastDateIndex = -1;

                    SearchedSubject = "обновление " + SearchedSubject.ToLower();

                    for (int i = 0; i < messages.Count; i++)
                    {
                        if (messages[i].Subject.ToLower() == SearchedSubject && messages[i].Date > Date)
                        {
                            LastDateIndex = i;
                            Action(MaxCount, CurrCount++);
                        }
                        else
                        {
                            Action(MaxCount, CurrCount++);
                        }
                    }

                    if (LastDateIndex > -1)
                    {
                        MaxCount++;

                        Action("Получение файла обновлений", MaxCount, CurrCount++);

                        messages[LastDateIndex].Download(ImapX.Enums.MessageFetchMode.Full);
                        //messages[i].Attachments[0].Download();

                        if (messages[LastDateIndex].Attachments.Length == 1)
                        {
                            Action("Файл обновлений обнаружен", MaxCount, CurrCount++);

                            lines.AppendLine(DateTime.Now.ToString() + " - обновление найдено");
                            Date = messages[LastDateIndex].Date.Value;

                            var str = messages[LastDateIndex].Attachments[0].GetTextData();

                            var Index = str.IndexOf(")IMAPX");
                            if (Index > -1)
                            {
                                str = str.Substring(0, Index);
                            }

                            //messages[Mn].Attachments[0].Save(TempPath, FileName);
                            var Bytes = Convert.FromBase64String(str);

                            FilePath = System.IO.Path.GetTempPath() + messages[LastDateIndex].Attachments[0].FileName;

                            using (var fs = new System.IO.FileStream(FilePath, System.IO.FileMode.Create))
                            { fs.Write(Bytes, 0, Bytes.Length); }
                        }
                        else
                        {
                            Action("Файл обновлений не обнаружен", MaxCount, CurrCount++);
                        }
                    }
                    else
                    {
                        Action("Обновления не обнаружены", MaxCount, CurrCount++);
                    }

                    Action("Закрытие почты", MaxCount, CurrCount++);
                    lines.AppendLine(DateTime.Now.ToString() + " - закрытие почты");
                    Client.Disconnect();

                    Action("Почта закрыта", MaxCount, CurrCount++);

                    return(true);
                }