/// <summary> /// Example showing: /// - how to find a html version in a Message /// - how to save MessageParts to file /// </summary> /// <param name="message">The message to examine for html</param> public static void FindHtmlInMessage(Message message) { MessagePart html = message.FindFirstHtmlVersion(); if (html != null) { // Save the plain text to a file, database or anything you like html.Save(new FileInfo("html.txt")); } }
public void Receive(string mailUser, string mailUserPwd, DataGridView dataGrid) { try { Pop3Client client = new Pop3Client(); StringBuilder builder = new StringBuilder(); client.Connect("pop-mail.outlook.com", 995, true); client.Authenticate(mailUser, mailUserPwd); var count = client.GetMessageCount(); DataTable dt = new DataTable("Inbox"); dt.Columns.Add("Subject", typeof(string)); dt.Columns.Add("Sender", typeof(string)); dt.Columns.Add("Date", typeof(DateTime)); dt.Columns.Add("Body", typeof(string)); for (int i = 1; i <= count; i++) { Application.DoEvents(); string body; Message message = client.GetMessage(i); MessagePart planeText = message.FindFirstHtmlVersion(); if (planeText != null) { // The message had a text/plain version - show that one body = planeText.GetBodyAsText(); } else { // Try to find a body to show in some of the other text versions List <MessagePart> textVersions = message.FindAllTextVersions(); if (textVersions.Count >= 1) { body = textVersions[0].GetBodyAsText(); } else { body = "<<OpenPop>> Cannot find a text version body in this message to show <<OpenPop>>"; } } dt.Rows.Add(message.Headers.Subject, message.Headers.From, message.Headers.DateSent, body); } dataGrid.DataSource = dt; dataGrid.Sort(dataGrid.Columns[2], ListSortDirection.Descending); } catch (Exception ex) { MessageBox.Show(ex.Message, "Message", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
public static string readMail(Message mail) { StringBuilder bodyBuilder = new StringBuilder(); MessagePart plainText = mail.FindFirstPlainTextVersion(); MessagePart htmlText = mail.FindFirstHtmlVersion(); if (plainText != null) bodyBuilder.Append(plainText.GetBodyAsText()); if (htmlText != null) bodyBuilder.Append(htmlText.GetBodyAsText()); if (plainText == null && bodyBuilder == null) return "Empty mail"; else return bodyBuilder.ToString(); }
private void FindPlainTextInMessage(OpenPop.Mime.Message message) { MessagePart plainText = message.FindFirstPlainTextVersion(); if (plainText != null) { // Save the plain text to a file, database or anything you like plainText.Save(new FileInfo(@"Texter.txt")); FileStream reder = new FileStream(@"Texter.txt", FileMode.Open); StreamReader reader = new StreamReader(reder); string bufs = reader.ReadToEnd(); BufferMailText = bufs; reder.Close(); File.Delete(@"Texter.txt"); FlowDocument document = new FlowDocument(); Paragraph paragraph = new Paragraph(); paragraph.Inlines.Add(new Bold(new Run(bufs))); document.Blocks.Add(paragraph); TextMessag.Document = document; } else { plainText = message.FindFirstHtmlVersion(); plainText.Save(new FileInfo(@"Texter.txt")); FileStream reder = new FileStream(@"Texter.txt", FileMode.Open); StreamReader reader = new StreamReader(reder); string bufs = reader.ReadToEnd(); bufs = bufs.Replace("<br>", "\n"); bufs = bufs.Replace("<HTML>", ""); bufs = bufs.Replace("</HTML>", ""); bufs = bufs.Replace("<BODY>", ""); bufs = bufs.Replace("</BODY>", ""); bufs = bufs.Replace("<p>", ""); bufs = bufs.Replace("</p>", ""); bufs = bufs.Replace("<div>", ""); bufs = bufs.Replace("</div>", ""); BufferMailText = bufs; reder.Close(); File.Delete(@"Texter.txt"); FlowDocument document = new FlowDocument(); Paragraph paragraph = new Paragraph(); paragraph.Inlines.Add(new Bold(new Run(bufs))); document.Blocks.Add(paragraph); TextMessag.Document = document; } }
//Takes SQLCOMMAND as parameter and run the command aginst the Database. public static void insetToDatabase( Message mail) { dbConnection.Open(); //SQLiteCommand command = new SQLiteCommand(SQLCOMMAND, dbConnection); //command.ExecuteNonQuery(); //dbConnection.Close(); SQLiteCommand cmd = new SQLiteCommand(dbConnection); SQLiteParameter param = cmd.CreateParameter(); string SQLCOMMAND = @"INSERT INTO MailList (MessageId, Receiver, Sender, Date, Subject, Message) VALUES ('" + mail.Headers.MessageId + "','" + mail.Headers.To + "','" + mail.Headers.From + "','" + mail.Headers.DateSent + "','" + mail.Headers.Subject + "', @param)"; cmd.CommandText = SQLCOMMAND; param.ParameterName = "param"; MessagePart html = mail.FindFirstHtmlVersion(); MessagePart plainText = mail.FindFirstPlainTextVersion(); StringBuilder builder = new StringBuilder(); if (html != null) param.Value = builder.Append(html.GetBodyAsText()).ToString(); else param.Value = plainText.GetBodyAsText(); cmd.Parameters.Add(param); try { cmd.ExecuteNonQuery(); } catch (Exception) { } //always close the connection!! finally { dbConnection.Close(); } }
public static string get_comment(Message message) { string commentText = null; MessagePart comment = message.FindFirstPlainTextVersion(); if (comment != null) { commentText = comment.GetBodyAsText(); if (string.IsNullOrEmpty(commentText)) { comment = message.FindFirstHtmlVersion(); if (comment != null) { commentText = comment.GetBodyAsText(); } } } if (string.IsNullOrEmpty(commentText)) { commentText = "NO PLAIN TEXT MESSAGE BODY FOUND"; } return commentText; }
//return true if msg was added /// <summary> /// insert the message into an sqlite database /// </summary> /// <param name="mess">message to insert</param> /// <param name="connection">connection to database to insert to</param> /// <returns>true if it succeeds with inserting to the sqlite database</returns> private bool insertMessageIntoSQL(Message mess, SQLiteConnection connection) { if (!isMessageInDB(mess.Headers.MessageId, connection))//if message is not in db then add to db { SQLiteCommand cmd = new SQLiteCommand("INSERT INTO `mails`(`MessageID`,`Subject`,`Sender`,`Message`,`ReceivedMail`,`ReceivedTime`,`Importance`) VALUES (@msgid,@Subject,@Sender,@Message,@ReceivedMail,@ReceivedTime,@Importance);"); cmd.Parameters.Add(new SQLiteParameter("@msgid", mess.Headers.MessageId)); try { if (mess.Headers.UnknownHeaders["isEncrypted"] == "true") { string key = mess.Headers.UnknownHeaders["key"]; string iv = mess.Headers.UnknownHeaders["iv"]; if (mess.Headers.UnknownHeaders["advancedEncryption"] == "true") { key = advancedEncryption.RSADecrypt(key,mess.Headers.UnknownHeaders["AEString"]); iv = advancedEncryption.RSADecrypt(iv, mess.Headers.UnknownHeaders["AEString"]); } string s = EncryptionHandler.decryptstring(mess.FindFirstHtmlVersion().GetBodyAsText().Replace("\r\n\r\n\r\n---\r\nDenne e-mail er fri for virus og malware fordi avast! Antivirus beskyttelse er aktiveret.\r\nhttp://www.avast.com\r\n", ""), key, iv); cmd.Parameters.Add(new SQLiteParameter("@Message", s)); } else { cmd.Parameters.Add(new SQLiteParameter("@Message", mess.FindFirstHtmlVersion().GetBodyAsText())); } } catch { if (mess.Headers.UnknownHeaders["isEncrypted"] == "true") { string key = mess.Headers.UnknownHeaders["key"]; string iv = mess.Headers.UnknownHeaders["iv"]; if (mess.Headers.UnknownHeaders["advancedEncryption"] == "true") { key = advancedEncryption.RSADecrypt(key, mess.Headers.UnknownHeaders["AEString"]); iv = advancedEncryption.RSADecrypt(iv, mess.Headers.UnknownHeaders["AEString"]); } string s = EncryptionHandler.decryptstring(mess.FindFirstPlainTextVersion().GetBodyAsText().Replace("\r\n\r\n\r\n---\r\nDenne e-mail er fri for virus og malware fordi avast! Antivirus beskyttelse er aktiveret.\r\nhttp://www.avast.com\r\n", ""), key, iv); cmd.Parameters.Add(new SQLiteParameter("@Message", s)); } else { cmd.Parameters.Add(new SQLiteParameter("@Message", mess.FindFirstPlainTextVersion().GetBodyAsText())); } } cmd.Parameters.Add(new SQLiteParameter("@Subject", mess.Headers.Subject)); cmd.Parameters.Add(new SQLiteParameter("@Sender", mess.Headers.From)); cmd.Parameters.Add(new SQLiteParameter("@ReceivedMail", mess.Headers.To[0])); cmd.Parameters.Add(new SQLiteParameter("@ReceivedTime", mess.Headers.DateSent)); cmd.Parameters.Add(new SQLiteParameter("@Importance", mess.Headers.Importance.ToString())); cmd.Connection = connection; cmd.ExecuteNonQuery(); return true; } else { return false; } }
public void receiveMail(string userName, string psw, string service) { DataTable dtmail = new DataTable(); SqlDataAdapter adapteremailrecu = CreerDataAdapter(); adapteremailrecu.Fill(dtmail); //dtmail.Columns.Add(new DataColumn("mailsender", typeof(string))); //dtmail.Columns.Add(new DataColumn("mailfrom", typeof(string))); //dtmail.Columns.Add(new DataColumn("mailto", typeof(string))); //dtmail.Columns.Add(new DataColumn("mailcc", typeof(string))); //dtmail.Columns.Add(new DataColumn("maildateTime", typeof(string))); //dtmail.Columns.Add(new DataColumn("mailsubject", typeof(string))); //dtmail.Columns.Add(new DataColumn("mailbodySimple", typeof(string))); //dtmail.Columns.Add(new DataColumn("mailbody", typeof(string))); //dtmail.Columns.Add(new DataColumn("pathAttachmentFile", typeof(string))); Pop3Client receiveclient = new Pop3Client(); if (receiveclient.Connected) { receiveclient.Disconnect(); } receiveclient.Connect(service, 995, true); receiveclient.Authenticate(userName, psw); int messageCount = receiveclient.GetMessageCount(); List <string> ids = receiveclient.GetMessageUids(); for (int i = 0; i < messageCount; i++) { if (dtmail.Select("mailID='@id'".Replace("@id", ids[i])).Length < 1) { DataRow dtr = dtmail.NewRow(); OpenPop.Mime.Message message = receiveclient.GetMessage(i + 1); string sender = message.Headers.From.DisplayName; string from = message.Headers.From.Address; string subject = message.Headers.Subject; List <string> keyw = message.Headers.Keywords; List <RfcMailAddress> mailCc = message.Headers.Cc; List <RfcMailAddress> mailTo = message.Headers.To; DateTime dateSent = message.Headers.DateSent; MessagePart msgPart = message.MessagePart; string body = ""; string bodys = ""; if (msgPart.IsText) { body = msgPart.GetBodyAsText(); bodys = body; } else if (msgPart.IsMultiPart) { MessagePart plainTextPart = message.FindFirstPlainTextVersion(); MessagePart plainHtmlPart = message.FindFirstHtmlVersion(); if (plainTextPart != null) { // The message had a text/plain version - show that one //TextBox1.Text = plainTextPart.GetBodyAsText(); body = plainHtmlPart.GetBodyAsText(); bodys = plainTextPart.GetBodyAsText(); //byte[] bodyy = plainTextPart.MessageParts[0].MessageParts.ToArray(); //string html = Encoding.GetEncoding("gb18030").GetString(bodyy); } else { // Try to find a body to show in some of the other text versions List <MessagePart> textVersions = message.FindAllTextVersions(); if (textVersions.Count >= 1) { body = textVersions[0].GetBodyAsText(); bodys = body; } } } List <MessagePart> attachments = message.FindAllAttachments(); string pathAttachmentFile = ""; if (attachments.Count > 0) { string dir = Server.MapPath("~/attchment/"); if (!System.IO.Directory.Exists(dir)) { System.IO.Directory.CreateDirectory(dir); } foreach (MessagePart attachment in attachments) { string newFileName = attachment.FileName; string path = dir + newFileName; WebClient myWebClient = new WebClient(); myWebClient.Credentials = CredentialCache.DefaultCredentials; try { Stream postStream = myWebClient.OpenWrite(path, "PUT"); if (postStream.CanWrite) { postStream.Write(attachment.Body, 0, attachment.Body.Length); } else { //MessageBox.Show("Web服务器文件目前不可写入,请检查Web服务器目录权限设置!","系统提示",MessageBoxButtons.OK,MessageBoxIcon.Information); } postStream.Close();//关闭流 pathAttachmentFile = path + ";" + pathAttachmentFile; } catch { ; } } attachments.Clear(); } string bodySimple = ""; if (bodys.Length > 30) { bodySimple = bodys.Substring(0, 30); } else { bodySimple = bodys.Substring(0, bodys.Length); } string listCc = ""; foreach (RfcMailAddress address in mailCc) { listCc = listCc + address.Address.ToString() + ";"; } string listTo = ""; foreach (RfcMailAddress address in mailTo) { listTo = listTo + address.ToString() + ";"; } body = body.Replace(@"cid:", @"/attchment/"); dtr["mailID"] = ids[i]; dtr["fk_userid"] = 1; dtr["mailsender"] = sender; dtr["mailfrom"] = from; dtr["mailto"] = listTo; dtr["mailcc"] = listCc; dtr["maildateTime"] = dateSent.ToString("yyyy-MM-dd HH:mm"); dtr["mailsubject"] = subject; dtr["mailbodySimple"] = bodySimple; dtr["mailbody"] = body; dtr["pathAttachmentFile"] = pathAttachmentFile; dtmail.Rows.Add(dtr); } } dtmail.DefaultView.Sort = "maildateTime DESC"; adapteremailrecu.Update(dtmail); }
public void TestGetFirstHTMLVersion() { const string rfcExample = "Content-type: text/html; charset=us-ascii\r\n" + "\r\n" + "HTML here"; Message message = new Message(Encoding.ASCII.GetBytes(rfcExample)); MessagePart part = message.FindFirstHtmlVersion(); Assert.NotNull(part); Assert.AreEqual("text/html", part.ContentType.MediaType); Assert.AreEqual("HTML here", part.GetBodyAsText()); }
/// <summary> /// Список сообщений. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void ListMessagesMessageSelected(object sender, TreeViewEventArgs e) { Message message = messages[GetMessageNumberFromSelectedNode(listMessages.SelectedNode)]; List <MessagePart> att = message.FindAllAttachments(); cbAttachments.Items.Clear(); if (message.FindAllAttachments().Count > 0) { foreach (MessagePart at in att) { cbAttachments.Items.Add(at.FileName); } btDownload.Enabled = true; lbAttachmentsCount.Text = cbAttachments.Items.Count.ToString(); } else { lbAttachmentsCount.Text = "0"; btDownload.Enabled = false; } StringBuilder tmp = new StringBuilder(); foreach (RfcMailAddress a in message.Headers.To) { tmp.Append(a.ToString() + " "); } tbFrom.Text = message.Headers.From.ToString(); tbTo.Text = tmp.ToString(); if (message.Headers.Subject != null) { tbSubject.Text = message.Headers.Subject.ToString(); } else { tbSubject.Text = "Без темы"; } changeButtonsState(); if (seenUids.Contains(message.Headers.MessageId)) { listMessages.SelectedNode.NodeFont = listMessages.Font; } else { listMessages.SelectedNode.NodeFont = listMessages.Font; seenUids.Add(message.Headers.MessageId); File.AppendAllText("ids", message.Headers.MessageId + "\n"); } if (listMessages.SelectedNode.Tag is MessagePart) { MessagePart selectedMessagePart = (MessagePart)listMessages.SelectedNode.Tag; mailViewer.DocumentText = selectedMessagePart.GetBodyAsText(); } else { MessagePart plainTextPart = message.FindFirstHtmlVersion(); if (plainTextPart != null) { mailViewer.DocumentText = plainTextPart.GetBodyAsText(); } else { List <MessagePart> textVersions = message.FindAllTextVersions(); if (textVersions.Count >= 1) { mailViewer.DocumentText = textVersions[0].GetBodyAsText(); } else { mailViewer.DocumentText = "<<OpenPop>> Cannot find a text version body in this message to show <<OpenPop>>"; } } } listMessages.Refresh(); }
private static bool PushToIssueTracker(Message message) { Console.WriteLine("\t\tPushing message '{0}' to IssueTracker ...", message.Headers.Subject); try { var messageBody = message.FindFirstHtmlVersion().GetBodyAsText(); var creator = GetMatch(messageBody, "Creator: (.*?)<br"); var text = GetMatch(messageBody, "Text:<pre>(.*?)</pre>"); var stackTrace = GetMatch(messageBody, "Stack Trace:<pre>(.*?)</pre>"); var serverVariables = GetMatch(messageBody, "Server Variables:<pre>(.*?)</pre>"); if (text.StartsWith("IssueTracker unreachable - ")) text = text.Substring("IssueTracker unreachable - ".Length); creator = HttpUtility.HtmlDecode(creator); text = HttpUtility.HtmlDecode(text); stackTrace = HttpUtility.HtmlDecode(stackTrace); serverVariables = HttpUtility.HtmlDecode(serverVariables); if (creator.IsNoE() && text.IsNoE() && stackTrace.IsNoE() && serverVariables.IsNoE()) return false; if (message.Headers.Sender != null && message.Headers.Sender.Address.HasValue()) creator += " (" + message.Headers.Sender.Address + ")"; else if (message.Headers.ReplyTo != null && message.Headers.ReplyTo.Address.HasValue()) creator += " (" + message.Headers.ReplyTo.Address + ")"; try { var issueTracker = new Client.IssueTracker(); issueTracker.Post(new Issue { Text = text, ServerVariables = serverVariables, Source = creator, StackTrace = stackTrace, Version = "" }); Console.WriteLine("\t\tMessage pushed."); } catch (Exception ex) { Console.WriteLine("\t\tUnable to push message: " + ex); LogOwnError(new ApplicationException("Unable to push message: " + ex.Message, ex)); } return true; } catch { Console.WriteLine("\t\tMessage seems not to be an issue report."); return false; } }
//focusing first on gMail account using recent: in username public void FetchRecentMessages(Account emailAccount, bool isFetchLast30days) { SqlConnection connection = null; SqlCommand cmd = null; string emailUsername = null; if (isFetchLast30days) { if (emailAccount.server.Contains("gmail.com")) { emailUsername = "******" + emailAccount.username; } else { emailUsername = emailAccount.username; } CoreFeature.getInstance().LogActivity(LogLevel.Debug, "Fetching *last 30 days* message", EventLogEntryType.Information); } else { emailUsername = emailAccount.username; CoreFeature.getInstance().LogActivity(LogLevel.Debug, "Fetching *new* message", EventLogEntryType.Information); } if (PosLibrary.CoreFeature.getInstance().Connect(emailAccount.name, emailAccount.server, emailAccount.port, emailAccount.use_ssl, emailUsername, emailAccount.password)) { int count = PosLibrary.CoreFeature.getInstance().getPop3Client().GetMessageCount(); for (int i = 1; i <= count; i++) { //Regards to : http://hpop.sourceforge.net/exampleSpecificParts.php OpenPop.Mime.Message message = PosLibrary.CoreFeature.getInstance().getPop3Client().GetMessage(i); MessagePart messagePart = message.FindFirstPlainTextVersion(); if (messagePart == null) { messagePart = message.FindFirstHtmlVersion(); } string messageBody = null; if (messagePart != null) { messageBody = messagePart.GetBodyAsText(); } messageBody = Regex.Replace(messageBody, "<.*?>", string.Empty); //save to appropriate inbox connection = CoreFeature.getInstance().getDataConnection(); string sql = "insert into inbox(account_name,sender,subject,body,date, sender_ip,[to]) values (@account_name,@sender,@subject,@body,@date,@sender_ip,@to)"; cmd = new SqlCommand(sql, connection); cmd.Parameters.Add(new SqlParameter("account_name", emailAccount.name.ToString())); cmd.Parameters.Add(new SqlParameter("sender", message.Headers.From.ToString())); cmd.Parameters.Add(new SqlParameter("subject", message.Headers.Subject.ToString())); cmd.Parameters.Add(new SqlParameter("body", messageBody.ToString())); cmd.Parameters.Add(new SqlParameter("date", message.Headers.Date.ToString())); cmd.Parameters.Add(new SqlParameter("sender_ip", message.Headers.Received[message.Headers.Received.Count - 1].Raw.ToString())); cmd.Parameters.Add(new SqlParameter("to", message.Headers.To[message.Headers.To.Count - 1].ToString())); try { int rowAffected = cmd.ExecuteNonQuery(); CoreFeature.getInstance().LogActivity(LogLevel.Debug, "Inserting email inbox from " + message.Headers.From + ", subject=" + message.Headers.Subject + ", body=" + messageBody, EventLogEntryType.Information); } catch (Exception ex) { CoreFeature.getInstance().LogActivity(LogLevel.Debug, "[Internal Application Error] FetchRecentMessages " + ex.Message, EventLogEntryType.Information); } cmd.Dispose(); connection.Close(); } // delete if there any message received from the server if (count > 0 && !emailAccount.server.Contains("gmail.com")) { pop3Client.DeleteAllMessages(); pop3Client.Disconnect(); } } else { CoreFeature.getInstance().LogActivity(LogLevel.Debug, "Unable to login to your email", EventLogEntryType.Information); } }
//private void DepartSent_SMS() //{ // DataTable dtDepartmentSMSSent = new DataTable(); // dtDepartmentSMSSent = DataAccessManager.GetSMSSent( Convert.ToString(Session["DeptID"]), Convert.ToInt32(Session["CampusID"])); // Session["dtDepartmentSMSSent"] = dtDepartmentSMSSent; // rgvDepartmentSent.DataSource = (DataTable)Session["dtDepartmentSMSSent"]; //} //protected void rgvDepartmentSent_SortCommand(object sender, GridSortCommandEventArgs e) //{ // this.rgvDepartmentSent.MasterTableView.AllowNaturalSort = true; // this.rgvDepartmentSent.MasterTableView.Rebind(); //} //protected void rgvDepartmentSent_PageIndexChanged(object sender, GridPageChangedEventArgs e) //{ // try // { // rgvDepartmentSent.DataSource = (DataTable)Session["dtDepartmentSMSSent"]; // } // catch (Exception ex) // { // } //} #endregion public void fetchmail(string DeptID, int CampusID) { try { DataTable dtEmailConfig = DataAccessManager.GetEmailConfigDetail(DeptID, CampusID); if (dtEmailConfig.Rows.Count > 0) { Pop3Client pop3Client; pop3Client = new Pop3Client(); pop3Client.Connect(dtEmailConfig.Rows[0]["Pop3"].ToString(), Convert.ToInt32(dtEmailConfig.Rows[0]["PortIn"]), Convert.ToBoolean(dtEmailConfig.Rows[0]["SSL"])); pop3Client.Authenticate(dtEmailConfig.Rows[0]["DeptEmail"].ToString(), dtEmailConfig.Rows[0]["Pass"].ToString(), AuthenticationMethod.UsernameAndPassword); if (pop3Client.Connected) { int count = pop3Client.GetMessageCount(); int progressstepno; if (count == 0) { } else { progressstepno = 100 - count; this.Emails = new List <Email>(); for (int i = 1; i <= count; i++) { OpenPop.Mime.Message message = pop3Client.GetMessage(i); Email email = new Email() { MessageNumber = i, messageId = message.Headers.MessageId, Subject = message.Headers.Subject, DateSent = message.Headers.DateSent, From = message.Headers.From.Address }; MessagePart body = message.FindFirstHtmlVersion(); if (body != null) { email.Body = body.GetBodyAsText(); } else { body = message.FindFirstHtmlVersion(); if (body != null) { email.Body = body.GetBodyAsText(); } } email.IsAttached = false; this.Emails.Add(email); //Attachment Process List <MessagePart> attachments = message.FindAllAttachments(); foreach (MessagePart attachment in attachments) { email.IsAttached = true; string FolderName = string.Empty; FolderName = Convert.ToString(Session["CampusName"]); String path = Server.MapPath("~/InboxAttachment/" + FolderName); if (!Directory.Exists(path)) { // Try to create the directory. DirectoryInfo di = Directory.CreateDirectory(path); } string ext = attachment.FileName.Split('.')[1]; // FileInfo file = new FileInfo(Server.MapPath("InboxAttachment\\") + attachment.FileName.ToString()); FileInfo file = new FileInfo(Server.MapPath("InboxAttachment\\" + FolderName + "\\") + attachment.FileName.ToString()); attachment.SaveToFile(file); Attachment att = new Attachment(); att.messageId = message.Headers.MessageId; att.FileName = attachment.FileName; attItem.Add(att); } //System.Threading.Thread.Sleep(500); } //Insert into database Inbox table DataTable dtStudentNo = new DataTable(); bool IsReadAndSave = false; foreach (var ReadItem in Emails) { string from = string.Empty, subj = string.Empty, messId = string.Empty, Ebody = string.Empty; from = Convert.ToString(ReadItem.From); subj = Convert.ToString(ReadItem.Subject); messId = Convert.ToString(ReadItem.messageId); Ebody = Convert.ToString(ReadItem.Body); if (Ebody != string.Empty && Ebody != null) { Ebody = Ebody.Replace("'", " "); } DateTime date = ReadItem.DateSent; bool IsAtta = ReadItem.IsAttached; //Student Email if (Source.SOrL(Convert.ToString(Session["StudentNo"]), Convert.ToString(Session["leadID"]))) { dtStudentNo = DyDataAccessManager.GetStudentNo(from, from); if (dtStudentNo.Rows.Count == 0) { IsReadAndSave = DataAccessManager.ReadEmailAndSaveDatabase("0", Convert.ToString(Session["DeptID"]), messId, dtEmailConfig.Rows[0]["DeptEmail"].ToString(), from, subj, Ebody, IsAtta, date, Convert.ToInt32(Session["CampusID"])); } else { IsReadAndSave = DataAccessManager.ReadEmailAndSaveDatabase(dtStudentNo.Rows[0]["StudentNo"].ToString(), Convert.ToString(Session["DeptID"]), messId, dtEmailConfig.Rows[0]["DeptEmail"].ToString(), from, subj, Ebody, IsAtta, date, Convert.ToInt32(Session["CampusID"])); } } //Leads Email if (Source.SOrL(Convert.ToString(Session["ParamStudentNo"]), Convert.ToString(Session["ParamleadID"])) == false) { dtStudentNo = DyDataAccessManager.GetLeadsID(from, from); if (dtStudentNo.Rows.Count == 0) { IsReadAndSave = DataAccessManager.ReadEmailAndSaveDatabaseLead("0", Convert.ToString(Session["DeptID"]), messId, dtEmailConfig.Rows[0]["DeptEmail"].ToString(), from, subj, Ebody, IsAtta, date, Convert.ToInt32(Session["CampusID"])); } else { IsReadAndSave = DataAccessManager.ReadEmailAndSaveDatabaseLead(dtStudentNo.Rows[0]["LeadsID"].ToString(), Convert.ToString(Session["DeptID"]), messId, dtEmailConfig.Rows[0]["DeptEmail"].ToString(), from, subj, Ebody, IsAtta, date, Convert.ToInt32(Session["CampusID"])); } } // } //Insert into database Attachment table foreach (var attachItem in attItem) { bool success; string Filname = attachItem.FileName; string MssID = attachItem.messageId; success = DataAccessManager.ReadEmailAttachmentAndSaveDatabase(MssID, Filname); } Emails.Clear(); // attItem.Clear(); pop3Client.DeleteAllMessages(); //StartNotification(count); } } pop3Client.Disconnect(); } } catch (Exception ex) { } }
public void ReadMail(Object threadContext) { StringBuilder builder = new StringBuilder(); MessagePart plaintext = _NewMessage.FindFirstPlainTextVersion(); string result = ""; if (plaintext != null) { // We found some plaintext! builder.Append(plaintext.GetBodyAsText()); result = builder.ToString(); _newMessageinPlainText = result; } else { // Might include a part holding html instead MessagePart html = _NewMessage.FindFirstHtmlVersion(); if (html != null) { // We found some html! builder.Append(html.GetBodyAsText()); result = StripHTML(builder.ToString()); _newMessageinPlainText = result; } } int Who = FromWho(_NewMessage.Headers.From.Address); if (Who == -1) //cannot download attachement from UNKNOWN { ReadingOrderThruEmail(_NewMessage.Headers.From.Address, _NewMessage.Headers.Subject, result); _doneevent.Set(); return; } // ### DELETED MODULE FOR PEPPER #### string replyMSG; foreach (MessagePart attachment in _NewMessage.FindAllAttachments()) { //upgrade one at a time, cannot upgrade both bios and pepper in one time. switch (attachment.FileName) { case Variables.FilenameUpdateBios: //BIOS Update logger.Trace("Got bios Update file."); File.WriteAllBytes(Variables.PathUpdateBios, attachment.Body); pepThread th = new pepThread(); //th.UpdateBios(); <----- need to email logger.Debug("Need to restart pepper."); Variables.NeedtoRestart = true; if (Variables.Contacts[Who].Closeness >= 75) { replyMSG = "Got the Bios Update " + Variables.Contacts[Who].PetName + "!!!"; } else { replyMSG = "Got the Bios Update " + Variables.Contacts[Who].FirstName + "!!!"; } //sendEmailHTML(_NewMessage.Headers.From.Address, Variables.Contacts[Who].FirstName + " " + Variables.Contacts[Who].LastName, "Re: BIOS Update", replyMSG); _doneevent.Set(); return; //break; case Variables.FilenameUpdatePepper: //UPDATE PEPPER "newme.pep" logger.Debug("Got newme.pep PEPPER UPDATE FILE"); File.WriteAllBytes(Variables.PathUpdatePepper, attachment.Body); logger.Debug("Need to restart pepper."); Variables.NeedtoRestart = true; if (Variables.Contacts[Who].Closeness >= 75) { replyMSG = "Got the New Dress " + Variables.Contacts[Who].PetName + "!!!"; } else { replyMSG = "Got the New Dress " + Variables.Contacts[Who].FirstName + "!!!"; } //sendEmailHTML(_NewMessage.Headers.From.Address, Variables.Contacts[Who].FirstName + " " + Variables.Contacts[Who].LastName, "Re: Pepper Upgrade", replyMSG); _doneevent.Set(); return; //break; } /* ### DELETED MODULE FOR PEPPER #### ### DELETED MODULE FOR PEPPER #### */ } /* ### DELETED MODULE FOR PEPPER#### ### DELETED MODULE FOR PEPPER #### */ ReadingOrderThruEmail(_NewMessage.Headers.From.Address, _NewMessage.Headers.Subject, result); _doneevent.Set(); }
private void button11_Click(object sender, EventArgs e) { dt = new DataTable("Inbox"); dt.Columns.Add("ID"); dt.Columns.Add("Temat"); dt.Columns.Add("Sender"); dt.Columns.Add("Email"); dt.Columns.Add("Tekst"); dt.Columns.Add("Czas"); dataGridView1.DataSource = dt; try { client.Connect(comboBox5.Text, 995, true); client.Authenticate(textBox6.Text, textBox5.Text, OpenPop.Pop3.AuthenticationMethod.UsernameAndPassword); int count = client.GetMessageCount(); string htmlContained = ""; if (client.Connected) { // for (int i = count; i > count - 100 && i >= 0; i--) // for (int i = 1; i <=100 && i <= count; i--) // for (int i = 1; i <= count && i <= 100 ; i++) // for (int i = count; i >= 100; i--) for (int i = count; i > count - Convert.ToInt32(textBox4.Text) && i >= 1; i--) { OpenPop.Mime.Message message = client.GetMessage(i); OpenPop.Mime.MessagePart html = message.FindFirstHtmlVersion(); OpenPop.Mime.MessagePart file = message.FindFirstMessagePartWithMediaType(""); if (html != null) { htmlContained = html.GetBodyAsText(); } else { html = message.FindFirstPlainTextVersion(); htmlContained = html.GetBodyAsText(); } string name = message.Headers.Subject; if (name == "") { name = "Brak Tematu"; } string nadawca = message.Headers.From.DisplayName; if (nadawca == "") { nadawca = "Brak Informacji"; } dt.Rows.Add(new object[] { i.ToString(), name.ToString(), nadawca.ToString(), message.Headers.From.Address, htmlContained, message.Headers.DateSent }); } } client.Disconnect(); } catch (Exception ex) { MessageBox.Show(ex.Message); } }
public void ReadMail() { try { Pop3Client pop3Client; pop3Client = new Pop3Client(); pop3Client.Connect(emailaccount.POP3, Convert.ToInt32(emailaccount.POP3port), emailaccount.IsSecured); pop3Client.Authenticate(emailaccount.emailid, emailaccount.password); // int MessageNum; int count = pop3Client.GetMessageCount(); var Emails = new List <POPEmail>(); int counter = 0; for (int i = count; i >= 1; i--) { OpenPop.Mime.Message message = pop3Client.GetMessage(i); POPEmail email = new POPEmail() { // MessageNumber = i, MessageNumber = message.Headers.MessageId, // message.Headers.Received. //MessageNum=MessageNumber, Subject = message.Headers.Subject, DateSent = message.Headers.DateSent, From = message.Headers.From.Address, //From = string.Format("<a href = 'mailto:{1}'>{0}</a>", message.Headers.From.DisplayName, message.Headers.From.Address), }; MessagePart body = message.FindFirstHtmlVersion(); if (body != null) { email.Body = body.GetBodyAsText(); } else { body = message.FindFirstPlainTextVersion(); if (body != null) { email.Body = body.GetBodyAsText(); } } List <MessagePart> attachments = message.FindAllAttachments(); foreach (MessagePart attachment in attachments) { email.Attachments.Add(new Attachment { FileName = attachment.FileName, ContentType = attachment.ContentType.MediaType, Content = attachment.Body }); } InsertEmailMessages(email.MessageNumber, email.Subject, email.DateSent, email.From, email.Body); Emails.Add(email); counter++; //if (counter > 2) //{ // break; //} } var emails = Emails; } catch (Exception ex) { // continue; throw ex; } }
private static void SaveMail(int i, Message message) { MessagePart plainHtmlPart = message.FindFirstHtmlVersion(); MessagePart plainTextPart = message.FindFirstPlainTextVersion(); string textMail = null; if (plainHtmlPart == null && plainTextPart != null) { textMail = plainTextPart.GetBodyAsText(); } else if (plainHtmlPart == null && plainTextPart == null) { List<MessagePart> textVersions = message.FindAllTextVersions(); if (textVersions.Count >= 1) textMail = textVersions[0].GetBodyAsText(); } else if (plainHtmlPart != null) { textMail = plainHtmlPart.GetBodyAsText(); } string xamlMail = HTMLConverter.HtmlToXamlConverter.ConvertHtmlToXaml(textMail, true); StringReader sr = new StringReader(xamlMail); XmlReader xr = XmlReader.Create(sr); FlowDocument fdMail = (FlowDocument)XamlReader.Load(xr); FlowDocument fd = new FlowDocument(); DateTime dateMail = Convert.ToDateTime(message.Headers.Date); BLL.DiaryBLL dbll = new BLL.DiaryBLL(); fd = dbll.GetDoc(dateMail.Date.ToString()); fd = CommonHelper.MergeFlowDocument(fd, fdMail); dbll.Save(fd, dateMail.Date.ToString()); }
}//obtenir les emails envoyés dans le serveur public void receiveMail(string userName, string psw, string service) { DataTable dtmail = new DataTable(); SqlDataAdapter adapteremailrecu = CreerDataAdapter(); adapteremailrecu.Fill(dtmail); Pop3Client receiveclient = new Pop3Client(); if (receiveclient.Connected) { receiveclient.Disconnect(); } receiveclient.Connect(service, 995, true); receiveclient.Authenticate(userName, psw); int messageCount = receiveclient.GetMessageCount(); List <string> ids = receiveclient.GetMessageUids(); for (int i = 0; i < messageCount; i++) { if (dtmail.Select("mailID='@id'".Replace("@id", ids[i])).Length < 1) { DataRow dtr = dtmail.NewRow(); OpenPop.Mime.Message message = receiveclient.GetMessage(i + 1); string sender = message.Headers.From.DisplayName; string from = message.Headers.From.Address; string subject = message.Headers.Subject; List <string> keyw = message.Headers.Keywords; List <RfcMailAddress> mailCc = message.Headers.Cc; List <RfcMailAddress> mailTo = message.Headers.To; DateTime dateSent = message.Headers.DateSent; MessagePart msgPart = message.MessagePart; string body = ""; string bodys = ""; if (msgPart.IsText) { body = msgPart.GetBodyAsText(); bodys = body; } else if (msgPart.IsMultiPart) { MessagePart plainTextPart = message.FindFirstPlainTextVersion(); MessagePart plainHtmlPart = message.FindFirstHtmlVersion(); if (plainTextPart != null) { body = plainHtmlPart.GetBodyAsText(); bodys = plainTextPart.GetBodyAsText(); } else { List <MessagePart> textVersions = message.FindAllTextVersions(); if (textVersions.Count >= 1) { body = textVersions[0].GetBodyAsText(); bodys = body; } } } List <MessagePart> attachments = message.FindAllAttachments(); string pathAttachmentFile = ""; if (attachments.Count > 0) { string dir = System.Web.HttpContext.Current.Server.MapPath("~/attchment/"); if (!System.IO.Directory.Exists(dir)) { System.IO.Directory.CreateDirectory(dir); } foreach (MessagePart attachment in attachments) { string newFileName = attachment.FileName; string path = dir + newFileName; WebClient myWebClient = new WebClient(); myWebClient.Credentials = CredentialCache.DefaultCredentials; try { Stream postStream = myWebClient.OpenWrite(path, "PUT"); if (postStream.CanWrite) { postStream.Write(attachment.Body, 0, attachment.Body.Length); } else { } postStream.Close();//关闭流 pathAttachmentFile = path + ";" + pathAttachmentFile; } catch { ; } } attachments.Clear(); } string bodySimple = ""; if (bodys.Length > 30) { bodySimple = bodys.Substring(0, 30); } else { bodySimple = bodys.Substring(0, bodys.Length); } string listCc = ""; foreach (RfcMailAddress address in mailCc) { listCc = listCc + address.Address.ToString() + ";"; } string listTo = ""; foreach (RfcMailAddress address in mailTo) { listTo = listTo + address.ToString() + ";"; } body = body.Replace(@"cid:", @"/attchment/"); dtr["mailID"] = ids[i]; dtr["fk_userid"] = 1; dtr["mailsender"] = sender; dtr["mailfrom"] = from; dtr["mailto"] = listTo; dtr["mailcc"] = listCc; dtr["maildateTime"] = dateSent.ToString("yyyy-MM-dd HH:mm"); dtr["mailsubject"] = subject; dtr["mailbodySimple"] = bodySimple; dtr["mailbody"] = body; dtr["pathAttachmentFile"] = pathAttachmentFile; dtmail.Rows.Add(dtr); } } dtmail.DefaultView.Sort = "maildateTime DESC"; adapteremailrecu.Update(dtmail); }//commuent on recevoir les email si quelqu'un envoie un émail