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); }
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); } } } } }
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); } }
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) ; } }
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); }