public static List<MailMessageEx> Receive(string hostname, int port, bool useSsl, string username, string password) { using (Pop3Client client = new Pop3Client(hostname, port, useSsl, username, password)) { client.Trace += new Action<string>(Console.WriteLine); client.Authenticate(); client.Stat(); List<MailMessageEx> maillist = new List<MailMessageEx>(); MailMessageEx message = null; foreach (Pop3ListItem item in client.List()) { message = client.RetrMailMessageEx(item); if (message != null) { client.Dele(item); maillist.Add(message); } } client.Noop(); client.Rset(); client.Quit(); return maillist; } }
static void Main(string[] args) { List <MessageData> messageDatas = new List <MessageData>(); Pop3Client pop3Client = new Pop3Client(); pop3Client.Connect("smtp.gmail.com", "recent:[email protected]", "167AEq!!", true); var messages = pop3Client.List(); foreach (Pop3Message message in messages) { pop3Client.Retrieve(message); Console.WriteLine("MessageId: {0}", message.MessageId); Console.WriteLine("Date: {0}", message.Date); Console.WriteLine("From: {0}", message.From); Console.WriteLine("To: {0}", message.To); Console.WriteLine("Subject: {0}", message.Subject); Console.WriteLine("___________________________________"); Console.WriteLine(); MessageData data = new MessageData { MessageId = message.MessageId, Date = message.Date, From = message.From, Subject = message.Subject, To = message.To }; messageDatas.Add(data); } JsonConvert.SerializeObject(messageDatas); pop3Client.Disconnect(); Console.ReadLine(); }
public void RetrieveHeaderListOk() { Pop3Client pop3Client = new Pop3Client(new OnlyHeadersDummyNetworkOperations()); pop3Client.Connect("SERVER", "USERNAME", "PASSWORD"); List <Pop3Message> messages = new List <Pop3Message>(pop3Client.List()); pop3Client.RetrieveHeader(messages); Assert.IsFalse(messages[0].Retrieved); Assert.IsNotNull(messages[0].RawHeader); Assert.IsNull(messages[0].RawMessage); Assert.AreEqual("Rodolfo Finochietti <*****@*****.**>", messages[0].From); Assert.AreEqual("\"[email protected]\" <*****@*****.**>", messages[0].To); Assert.AreEqual("Tue, 13 Nov 2012 10:57:04 -0500", messages[0].Date); Assert.AreEqual("<*****@*****.**>", messages[0].MessageId); Assert.AreEqual("Test 1", messages[0].Subject); Assert.AreEqual("quoted-printable", messages[0].ContentTransferEncoding); Assert.IsNull(messages[0].Body); Assert.AreEqual("1.0", messages[0].GetHeaderData("MIME-Version")); Assert.AreEqual("Ac3Bt4nMDtM3y3FyQ1yd71JVtsSGJQ==", messages[0].GetHeaderData("Thread-Index")); Assert.IsFalse(messages[1].Retrieved); Assert.IsNotNull(messages[1].RawHeader); Assert.IsNull(messages[1].RawMessage); Assert.AreEqual("Rodolfo Finochietti <*****@*****.**>", messages[1].From); Assert.AreEqual("\"[email protected]\" <*****@*****.**>", messages[1].To); Assert.AreEqual("Tue, 13 Nov 2012 10:57:28 -0500", messages[1].Date); Assert.AreEqual("<*****@*****.**>", messages[1].MessageId); Assert.AreEqual("Test 2", messages[1].Subject); Assert.AreEqual("base64", messages[1].ContentTransferEncoding); Assert.IsNull(messages[1].Body); Assert.AreEqual("Microsoft-MacOutlook/14.2.4.120824", messages[1].GetHeaderData("user-agent:")); Assert.AreEqual(String.Empty, messages[1].GetHeaderData("X-MS-Has-Attach:")); }
private void ReadMail() { var client = new Pop3Client(); client.Connect("mail.epicsportexchange.com", "*****@*****.**", "vRa77330"); var messages = client.List().Where(x => !x.Retrieved).ToList(); if (!messages.Any()) { client.Disconnect(); return; } using (var context = new Entities()) { foreach (var message in messages) { client.Retrieve(message); switch (message.Subject) { case "Mirror": AddMessage(message, context); break; case "Groceries": AddGrocery(message, context); break; } client.Delete(message); } context.SaveChanges(); } client.Disconnect(); }
public void StartEmailIndexing() { if (!Directory.Exists(GlobalData.EmailIndexPath)) Directory.CreateDirectory(GlobalData.EmailIndexPath); IndexWriter index; PerFieldAnalyzerWrapper pfaw = new PerFieldAnalyzerWrapper(new KeywordAnalyzer()); pfaw.AddAnalyzer("body", new StopAnalyzer()); try { index = new IndexWriter(GlobalData.EmailIndexPath, pfaw, false); } catch { index = new IndexWriter(GlobalData.EmailIndexPath, pfaw, true); } const string PopServer = "pop.google.in"; const int PopPort = 995; const string User = "******"; const string Pass = "******"; using (Pop3Client client = new Pop3Client(PopServer, PopPort, true, User, Pass)) { client.Trace += new Action<string>(Console.WriteLine); //connects to Pop3 Server, Executes POP3 USER and PASS client.Authenticate(); client.Stat(); foreach (Pop3ListItem item in client.List()) { Document doc = new Document(); MailMessageEx message = client.RetrMailMessageEx(item); doc.Add(new Field("subject", message.Subject.ToLower(), Field.Store.YES, Field.Index.NO_NORMS)); doc.Add(new Field("from", message.From.ToString().ToLower(), Field.Store.YES, Field.Index.NO_NORMS)); doc.Add(new Field("to", message.To.ToString().ToLower(), Field.Store.YES, Field.Index.NO_NORMS)); //doc.Add(new Field("date", message.DeliveryDate.ToLower(), Field.Store.YES, Field.Index.NO_NORMS)); string code = message.Body; code = Regex.Replace(code, @"<\s*head\s*>(.|\n|\r)*?<\s*/\s*head\s*>", " ", RegexOptions.Compiled); //repalce <head> section with single whitespace code = Regex.Replace(code, @"<\s*script (.|\n|\r)*?<\s*/\s*script\s*>", " ", RegexOptions.Compiled);//repalce remaining <script> tags from body with single whitespace code = Regex.Replace(code, @"<!--(.|\n|\r)*?-->", " ", RegexOptions.Compiled); //repalce comments code = Regex.Replace(code, @"<(.|\n|\r)*?>", " ", RegexOptions.Compiled); //repalce all tags with single whitespace code = Regex.Replace(code, @"&.*?;", " ", RegexOptions.Compiled); //replace > e.t.c code = Regex.Replace(code, @"\s+", " ", RegexOptions.Compiled); //replace multiple whitespaces characters by single whitespace code = Regex.Replace(code, @"\ufffd", " ", RegexOptions.Compiled); doc.Add(new Field("body", code.ToLower(), Field.Store.YES, Field.Index.NO_NORMS)); index.AddDocument(doc); } client.Noop(); client.Rset(); client.Quit(); index.Optimize(); index.Close(); } }
public void RetrieveFoldedHeaderOk() { Pop3Client pop3Client = new Pop3Client(new OnlyHeadersDummyNetworkOperations()); pop3Client.Connect("SERVER", "USERNAME", "PASSWORD"); List <Pop3Message> messages = new List <Pop3Message>(pop3Client.List()); pop3Client.RetrieveHeader(messages[0]); Assert.IsFalse(messages[0].Retrieved); Assert.IsNotNull(messages[0].RawHeader); Assert.IsNull(messages[0].RawMessage); Assert.AreEqual("multipart/mixed;boundary=\"--boundary_0_........-....-....-....-............\"", messages[0].GetHeaderData("Content-Type-Custom")); }
public void ListOk() { Pop3Client pop3Client = new Pop3Client(new PlainMessagesDummyNetworkOperations()); pop3Client.Connect("SERVER", "USERNAME", "PASSWORD", 995, true); List <Pop3Message> messages = new List <Pop3Message>(pop3Client.List()); Assert.AreEqual(2, messages.Count); Assert.AreEqual(1, messages[0].Number); Assert.AreEqual(1586, messages[0].Bytes); Assert.IsFalse(messages[0].Retrieved); Assert.AreEqual(2, messages[1].Number); Assert.AreEqual(1584, messages[1].Bytes); Assert.IsFalse(messages[1].Retrieved); }
public static void GetMessages(string server, string userName, string password, bool useSsl) { try { using (Pop3Client pop3Client = new Pop3Client()) { Console.WriteLine("Connecting to POP3 server '{0}'...{1}", server, Environment.NewLine); pop3Client.Connect(server, userName, password, useSsl); Console.WriteLine("List Messages...{0}", Environment.NewLine); IEnumerable <Pop3Message> messages = pop3Client.List(); Console.WriteLine("Retrieve Messages...{0}", Environment.NewLine); foreach (Pop3Message message in messages) { Console.WriteLine("- Number: {0}", message.Number); pop3Client.Retrieve(message); Console.WriteLine("\t* MessageId: {0}", message.MessageId); Console.WriteLine("\t* Date: {0}", message.Date); Console.WriteLine("\t* From: {0}", message.From); Console.WriteLine("\t* To: {0}", message.To); Console.WriteLine("\t* Subject: {0}", message.Subject); Console.WriteLine("\t* Body Length: {0}", message.Body.Length); Console.WriteLine(); } Console.WriteLine("Disconnecting...{0}", Environment.NewLine); pop3Client.Disconnect( ); } } catch (Exception ex) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine(ex.Message); Console.ForegroundColor = ConsoleColor.White; } }
public IEnumerable <EmailMessage> GetAll() { var pop3Client = new Pop3Client(); pop3Client.Connect(this.server, this.userName, this.password, false); foreach (var email in pop3Client.List()) { pop3Client.Retrieve(email); yield return(new EmailMessage { MessageID = email.MessageId, Date = Convert.ToDateTime(email.Date), From = email.From, Subject = email.Subject, }); } pop3Client.Disconnect(); }
private IList <SidePOPMailMessage> check_email() { IList <SidePOPMailMessage> messages = new List <SidePOPMailMessage>(); try { pop3_client.Connect(); pop3_client.Authenticate(); pop3_client.GetStatistics(); foreach (Pop3ListItemResult item in pop3_client.List()) { SidePOPMailMessage message = pop3_client.RetrieveExtendedMailMessage(item); messages.Add(message); pop3_client.Delete(item); } if (pop3_client.Client.Connected) { pop3_client.SendNoOperation(); } } catch (Exception ex) { Log.bound_to(this).log_an_error_event_containing("{0} had an error:{1}{2}", ApplicationParameters.name, Environment.NewLine, ex.ToString()); } finally { try { pop3_client.Quit(); pop3_client.Disconnect(); } catch (Exception ex) { Log.bound_to(this).log_an_error_event_containing("{0} had an error:{1}{2}", ApplicationParameters.name, Environment.NewLine, ex.ToString()); } } return(messages); }
public static void GetMessages( string server, string userName, string password, bool useSsl ) { try { Pop3Client pop3Client = new Pop3Client( ); Console.WriteLine( "Connecting to POP3 server '{0}'...{1}", server, Environment.NewLine ); pop3Client.Connect( server, userName, password, useSsl ); Console.WriteLine( "List Messages...{0}", Environment.NewLine ); IEnumerable<Pop3Message> messages = pop3Client.List( ); Console.WriteLine( "Retrieve Messages...{0}", Environment.NewLine ); foreach ( Pop3Message message in messages ) { Console.WriteLine( "- Number: {0}", message.Number ); pop3Client.Retrieve( message ); Console.WriteLine( "\t* MessageId: {0}", message.MessageId ); Console.WriteLine( "\t* Date: {0}", message.Date ); Console.WriteLine( "\t* From: {0}", message.From ); Console.WriteLine( "\t* To: {0}", message.To ); Console.WriteLine( "\t* Subject: {0}", message.Subject ); Console.WriteLine( "\t* Body Length: {0}", message.Body.Length ); Console.WriteLine( ); } Console.WriteLine( "Disconnecting...{0}", Environment.NewLine ); pop3Client.Disconnect( ); } catch ( Exception ex ) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine( ex.Message ); Console.ForegroundColor = ConsoleColor.White; } }
public static List <MailMessageEx> Receive(string hostname, int port, bool useSsl, string username, string password) { using (Pop3Client client = new Pop3Client(hostname, port, useSsl, username, password)) { client.Trace += new Action <string>(Console.WriteLine); client.Authenticate(); client.Stat(); List <MailMessageEx> maillist = new List <MailMessageEx>(); MailMessageEx message = null; foreach (Pop3ListItem item in client.List()) { message = client.RetrMailMessageEx(item); if (message != null) { client.Dele(item); maillist.Add(message); } } client.Noop(); client.Rset(); client.Quit(); return(maillist); } }
public void RetrieveFoldedHeaderOk( ) { Pop3Client pop3Client = new Pop3Client( new OnlyHeadersDummyNetworkOperations( ) ); pop3Client.Connect( "SERVER", "USERNAME", "PASSWORD" ); List<Pop3Message> messages = new List<Pop3Message>( pop3Client.List( ) ); pop3Client.RetrieveHeader( messages[ 0 ] ); Assert.IsFalse( messages[ 0 ].Retrieved ); Assert.IsNotNull( messages[ 0 ].RawHeader ); Assert.IsNull( messages[ 0 ].RawMessage ); Assert.AreEqual( "multipart/mixed;boundary=\"--boundary_0_........-....-....-....-............\"", messages[ 0 ].GetHeaderData( "Content-Type-Custom" ) ); }
public void ListFail( ) { Pop3Client pop3Client = new Pop3Client( new PlainMessagesDummyNetworkOperations( ) ); pop3Client.List( ); }
public void ListOk( ) { Pop3Client pop3Client = new Pop3Client( new PlainMessagesDummyNetworkOperations( ) ); pop3Client.Connect( "SERVER", "USERNAME", "PASSWORD", 995, true ); List<Pop3Message> messages = new List<Pop3Message>( pop3Client.List( ) ); Assert.AreEqual( 2, messages.Count ); Assert.AreEqual( 1, messages[ 0 ].Number ); Assert.AreEqual( 1586, messages[ 0 ].Bytes ); Assert.IsFalse( messages[ 0 ].Retrieved ); Assert.AreEqual( 2, messages[ 1 ].Number ); Assert.AreEqual( 1584, messages[ 1 ].Bytes ); Assert.IsFalse( messages[ 1 ].Retrieved ); }
static void Main(string[] args) { try { string host = ConfigurationManager.AppSettings.Get("popHost"); int port = Convert.ToInt32(ConfigurationManager.AppSettings.Get("popPort")); bool useSSL = Convert.ToBoolean(ConfigurationManager.AppSettings.Get("useSSL")); string username = ConfigurationManager.AppSettings.Get("popUser"); string password = ConfigurationManager.AppSettings.Get("popPassword"); string dropPath = ConfigurationManager.AppSettings.Get("dropFolderPath"); bool traceToConsole = Convert.ToBoolean(ConfigurationManager.AppSettings.Get("traceToConsole")); bool deleteAfterRetrieve = Convert.ToBoolean(ConfigurationManager.AppSettings.Get("deleteAfterRetrieve")); TraceProvider.RegisterTraceProvider(); using (Pop3Client popClient = new Pop3Client(host, port, useSSL, username, password)) { if (traceToConsole) { popClient.Trace += new Action <string>(Console.WriteLine); } //connects to Pop3 Server, Executes POP3 USER and PASS popClient.Authenticate(); popClient.Stat(); System.Net.Mail.SmtpClient smtpClient = new System.Net.Mail.SmtpClient(); smtpClient.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.SpecifiedPickupDirectory; smtpClient.PickupDirectoryLocation = dropPath; StringBuilder traceMessage = new StringBuilder("Messages To Retrieve: " + popClient.List().Count); Console.WriteLine(traceMessage.ToString()); ULS.LogMessage("Pop Client", traceMessage.ToString(), "E-Mail", TraceProvider.TraceSeverity.InformationEvent); foreach (Pop3ListItem item in popClient.List()) { using (MailMessageEx popMessage = popClient.RetrMailMessageEx(item)) { using (System.Net.Mail.MailMessage smtpMessage = new System.Net.Mail.MailMessage()) { if (traceToConsole) { foreach (System.Net.Mail.MailAddress toAddress in popMessage.To) { Console.WriteLine("To: " + toAddress.Address); } Console.WriteLine("From: " + popMessage.From.Address); Console.WriteLine("Subject: " + popMessage.Subject); Console.WriteLine("Attachments: " + popMessage.Attachments.Count); foreach (System.Net.Mail.Attachment attachment in popMessage.Attachments) { Console.WriteLine("Attachment: " + attachment.Name); } Console.Write("Body: " + popMessage.Body + "\n"); } smtpMessage.From = popMessage.From; smtpMessage.Subject = popMessage.Subject; smtpMessage.SubjectEncoding = popMessage.SubjectEncoding; smtpMessage.Body = popMessage.Body; smtpMessage.BodyEncoding = popMessage.BodyEncoding; smtpMessage.Sender = popMessage.Sender; traceMessage = new StringBuilder("Message Processed:<br/>\n"); foreach (System.Net.Mail.MailAddress toAddress in popMessage.To) { traceMessage.Append("To: " + toAddress + "<br/>\n"); smtpMessage.To.Add(toAddress); } foreach (System.Net.Mail.MailAddress ccAddress in popMessage.CC) { traceMessage.Append("CC: " + ccAddress + "<br/>\n"); smtpMessage.CC.Add(ccAddress); } traceMessage.Append("From: " + popMessage.From.Address + "<br/>\n"); traceMessage.Append("Subject: " + popMessage.Subject + "<br/>\n"); foreach (System.Net.Mail.Attachment attachment in popMessage.Attachments) { smtpMessage.Attachments.Add(attachment); traceMessage.Append("Attachment: " + attachment.Name + "<br/>\n"); } smtpMessage.IsBodyHtml = popMessage.IsBodyHtml; foreach (string key in popMessage.Headers.AllKeys) { smtpMessage.Headers.Add(key, popMessage.Headers[key]); } ULS.LogMessage("Pop Client", traceMessage.ToString(), "E-Mail", TraceProvider.TraceSeverity.InformationEvent); smtpClient.Send(smtpMessage); if (deleteAfterRetrieve) { popClient.Dele(item); } } } } popClient.Noop(); if (!deleteAfterRetrieve) { popClient.Rset(); } popClient.Quit(); } } catch (Exception ex) { ULS.LogError("Pop Client", ex.ToString(), "E-Mail"); } TraceProvider.UnregisterTraceProvider(); }
public void StartEmailIndexing() { if (!Directory.Exists(GlobalData.EmailIndexPath)) { Directory.CreateDirectory(GlobalData.EmailIndexPath); } IndexWriter index; PerFieldAnalyzerWrapper pfaw = new PerFieldAnalyzerWrapper(new KeywordAnalyzer()); pfaw.AddAnalyzer("body", new StopAnalyzer()); try { index = new IndexWriter(GlobalData.EmailIndexPath, pfaw, false); } catch { index = new IndexWriter(GlobalData.EmailIndexPath, pfaw, true); } const string PopServer = "pop.google.in"; const int PopPort = 995; const string User = "******"; const string Pass = "******"; using (Pop3Client client = new Pop3Client(PopServer, PopPort, true, User, Pass)) { client.Trace += new Action <string>(Console.WriteLine); //connects to Pop3 Server, Executes POP3 USER and PASS client.Authenticate(); client.Stat(); foreach (Pop3ListItem item in client.List()) { Document doc = new Document(); MailMessageEx message = client.RetrMailMessageEx(item); doc.Add(new Field("subject", message.Subject.ToLower(), Field.Store.YES, Field.Index.NO_NORMS)); doc.Add(new Field("from", message.From.ToString().ToLower(), Field.Store.YES, Field.Index.NO_NORMS)); doc.Add(new Field("to", message.To.ToString().ToLower(), Field.Store.YES, Field.Index.NO_NORMS)); //doc.Add(new Field("date", message.DeliveryDate.ToLower(), Field.Store.YES, Field.Index.NO_NORMS)); string code = message.Body; code = Regex.Replace(code, @"<\s*head\s*>(.|\n|\r)*?<\s*/\s*head\s*>", " ", RegexOptions.Compiled); //repalce <head> section with single whitespace code = Regex.Replace(code, @"<\s*script (.|\n|\r)*?<\s*/\s*script\s*>", " ", RegexOptions.Compiled); //repalce remaining <script> tags from body with single whitespace code = Regex.Replace(code, @"<!--(.|\n|\r)*?-->", " ", RegexOptions.Compiled); //repalce comments code = Regex.Replace(code, @"<(.|\n|\r)*?>", " ", RegexOptions.Compiled); //repalce all tags with single whitespace code = Regex.Replace(code, @"&.*?;", " ", RegexOptions.Compiled); //replace > e.t.c code = Regex.Replace(code, @"\s+", " ", RegexOptions.Compiled); //replace multiple whitespaces characters by single whitespace code = Regex.Replace(code, @"\ufffd", " ", RegexOptions.Compiled); doc.Add(new Field("body", code.ToLower(), Field.Store.YES, Field.Index.NO_NORMS)); index.AddDocument(doc); } client.Noop(); client.Rset(); client.Quit(); index.Optimize(); index.Close(); } }
public void ListFail() { Pop3Client pop3Client = new Pop3Client(new PlainMessagesDummyNetworkOperations()); pop3Client.List(); }
/// <summary> /// 获取邮件 /// </summary> public void MailPop3Client() { //Logger.Log.Info("邮件审批开始..."); //Logger.Log.Info("************************---PopServer=" + PopServer); //Logger.Log.Debug("************************---PopPort=" + PopPort); //Logger.Log.Debug("************************---User="******"************************---Pass="******"************************---UseSSL=" + UseSSL); using (Pop3Client client = new Pop3Client(PopServer, PopPort, UseSSL, User, Pass)) { //显示程序与POP3服务器的通信过程 //client.Trace += new Action<string>(Console.WriteLine); //连接POP3服务器并验证用户身份 Logger.Log.Info("Connect POP3 Server and verify..."); client.Authenticate(); Logger.Log.Info("Verify Success..."); client.Stat(); //枚举所有未读邮件 Logger.Log.Info("Mail Exist..." + client.List()); //SpreadtrumLHDEntities Db = new SpreadtrumLHDEntities(); DbOperation dbo = new DbOperation(); foreach (Pop3ListItem item in client.List()) { MailMessageEx message = null; try { LOTSImportSDLogs lotlogs = new LOTSImportSDLogs(); Logger.Log.Info("RetrMailMessageEx item=" + item.MessageId); message = client.RetrMailMessageEx(item); if (message.Subject.ToLower().StartsWith("[lot judgement]") //&& message.Sender.Address.ToLower() == "*****@*****.**" ) { Logger.Log.Info("RetrMailMessageEx message subject=" + message.Subject); string[] data = getLotData(message.Subject); Logger.Log.Info("RetrMailMessageEx message osat=" + data[2]); Logger.Log.Info("RetrMailMessageEx message Device=" + data[3]); Logger.Log.Info("RetrMailMessageEx message LotNO=" + data[4]); Logger.Log.Info("RetrMailMessageEx message Stage=" + data[5]); Logger.Log.Info("RetrMailMessageEx message DeliveryDate=" + message.DeliveryDate.ToString()); //lotlogs.OSAT = data[2]; //lotlogs.Device = data[3]; //lotlogs.LotNO = data[4]; //lotlogs.Stage = data[5]; //lotlogs.DeliveryDate = message.DeliveryDate; //lotlogs.CreateTime = DateTime.Now; //lotlogs.LHDFormatStatus = "Pending"; //lotlogs.LHDImportStatus = "Pending"; //Db.LOTSImportSDLogs.Add(lotlogs); string insertSQL = @"INSERT INTO [dbo].[LOTSImportSDLogs] ([OSAT] ,[Device] ,[LotNO] ,[Stage] ,[DeliveryDate] ,[CreateTime] ,[LHDFormatStatus] ,[LHDImportStatus]) VALUES ('{0}' ,'{1}' ,'{2}' ,'{3}' ,'{4}' ,GETDATE() ,'Pending' ,'Pending');"; //Db.Set<LOTSImportSDLogs>().Attach(lotlogs); //Db.Entry(lotlogs).State = EntityState.Added; dbo.ExecuteNonQuery(string.Format(insertSQL, data[2], data[3], data[4], data[5], message.DeliveryDate.ToString("yyyy-MM-dd HH:mm:ss"))); } client.Dele(item); } catch (Exception ex) { Logger.Log.Error("RetrMailMessageEx error=" + ex); //client.Dele(item); continue; } } //Db.SaveChanges(); Logger.Log.Info("邮件处理完毕。"); client.Quit(); } }
/// <summary> /// 获取邮件 /// </summary> public void MailPop3Client() { //Logger.Log.Info("邮件审批开始..."); //Logger.Log.Info("************************---PopServer=" + PopServer); //Logger.Log.Debug("************************---PopPort=" + PopPort); //Logger.Log.Debug("************************---User="******"************************---Pass="******"************************---UseSSL=" + UseSSL); using (Pop3Client client = new Pop3Client(PopServer, PopPort, UseSSL, User, Pass)) { //显示程序与POP3服务器的通信过程 //client.Trace += new Action<string>(Console.WriteLine); //连接POP3服务器并验证用户身份 Logger.Log.Info("Connect POP3 Server and verify..."); client.Authenticate(); Logger.Log.Info("Verify Success..."); client.Stat(); //枚举所有未读邮件 Logger.Log.Info("Mail Exist..." + client.List()); SpreadtrumLHDEntities Db = new SpreadtrumLHDEntities(); foreach (Pop3ListItem item in client.List()) { MailMessageEx message = null; try { LOTSImportSDLogs lotlogs = new LOTSImportSDLogs(); Logger.Log.Info("RetrMailMessageEx item=" + item.MessageId); message = client.RetrMailMessageEx(item); if (message.Subject.ToLower().StartsWith("[lot judgement]") //&& message.Sender.Address.ToLower() == "*****@*****.**" ) { Logger.Log.Info("RetrMailMessageEx message subject=" + message.Subject); string[] data = getLotData(message.Subject); Logger.Log.Info("RetrMailMessageEx message osat=" + data[2]); Logger.Log.Info("RetrMailMessageEx message Device=" + data[3]); Logger.Log.Info("RetrMailMessageEx message LotNO=" + data[4]); Logger.Log.Info("RetrMailMessageEx message Stage=" + data[5]); Logger.Log.Info("RetrMailMessageEx message DeliveryDate=" + message.DeliveryDate.ToString()); lotlogs.OSAT = data[2]; lotlogs.Device = data[3]; lotlogs.LotNO = data[4]; lotlogs.Stage = data[5]; lotlogs.DeliveryDate = message.DeliveryDate; lotlogs.CreateTime = DateTime.Now; lotlogs.LHDFormatStatus = "Pending"; lotlogs.LHDImportStatus = "Pending"; Db.LOTSImportSDLogs.Add(lotlogs); //Db.Set<LOTSImportSDLogs>().Attach(lotlogs); //Db.Entry(lotlogs).State = EntityState.Added; } client.Dele(item); } catch (Exception ex) { Logger.Log.Error("RetrMailMessageEx error=" + ex); //client.Dele(item); continue; } } Db.SaveChanges(); Logger.Log.Info("邮件处理完毕。"); client.Quit(); } }
public void RetrieveHeaderListOk( ) { Pop3Client pop3Client = new Pop3Client( new OnlyHeadersDummyNetworkOperations( ) ); pop3Client.Connect( "SERVER", "USERNAME", "PASSWORD" ); List<Pop3Message> messages = new List<Pop3Message>( pop3Client.List( ) ); pop3Client.RetrieveHeader( messages ); Assert.IsFalse( messages[ 0 ].Retrieved ); Assert.IsNotNull( messages[ 0 ].RawHeader ); Assert.IsNull( messages[ 0 ].RawMessage ); Assert.AreEqual( "Rodolfo Finochietti <*****@*****.**>", messages[ 0 ].From ); Assert.AreEqual( "\"[email protected]\" <*****@*****.**>", messages[ 0 ].To ); Assert.AreEqual( "Tue, 13 Nov 2012 10:57:04 -0500", messages[ 0 ].Date ); Assert.AreEqual( "<*****@*****.**>", messages[ 0 ].MessageId ); Assert.AreEqual( "Test 1", messages[ 0 ].Subject ); Assert.AreEqual( "quoted-printable", messages[ 0 ].ContentTransferEncoding ); Assert.IsNull( messages[ 0 ].Body ); Assert.AreEqual( "1.0", messages[ 0 ].GetHeaderData( "MIME-Version" ) ); Assert.AreEqual( "Ac3Bt4nMDtM3y3FyQ1yd71JVtsSGJQ==", messages[ 0 ].GetHeaderData( "Thread-Index" ) ); Assert.IsFalse( messages[ 1 ].Retrieved ); Assert.IsNotNull( messages[ 1 ].RawHeader ); Assert.IsNull( messages[ 1 ].RawMessage ); Assert.AreEqual( "Rodolfo Finochietti <*****@*****.**>", messages[ 1 ].From ); Assert.AreEqual( "\"[email protected]\" <*****@*****.**>", messages[ 1 ].To ); Assert.AreEqual( "Tue, 13 Nov 2012 10:57:28 -0500", messages[ 1 ].Date ); Assert.AreEqual( "<*****@*****.**>", messages[ 1 ].MessageId ); Assert.AreEqual( "Test 2", messages[ 1 ].Subject ); Assert.AreEqual( "base64", messages[ 1 ].ContentTransferEncoding ); Assert.IsNull( messages[ 1 ].Body ); Assert.AreEqual( "Microsoft-MacOutlook/14.2.4.120824", messages[ 1 ].GetHeaderData( "user-agent:" ) ); Assert.AreEqual( String.Empty, messages[ 1 ].GetHeaderData( "X-MS-Has-Attach:" ) ); }
public static void MessageReceiptCycle() { Pop3Client popClient = null; string currentFromEmail = ""; string currentToEmail = ""; try { popClient = new Pop3Client(); popClient.Connect(EmailAgent.Pop3EmailServer, EmailAgent.EmailUserName, EmailAgent.EmailPassword); List <Pop3Message> messages = popClient.List(); int msgCount = 0; foreach (Pop3Message message in messages) { msgCount++; Console.WriteLine("Reading Msg: " + msgCount.ToString()); popClient.Retrieve(message); string toPart = message.To; string fromPart = message.From; Console.WriteLine("From: " + fromPart); string body = message.Body; string b2 = System.Web.HttpUtility.HtmlDecode(body).Trim(); string msgID = Guid.NewGuid().ToString(); currentToEmail = toPart; currentFromEmail = fromPart; string[] toArr = currentToEmail.Split(new char[] { '[', ']', '{', '}', ';', '<', '>', ' ', ':', '"' }, StringSplitOptions.RemoveEmptyEntries); string[] fromArr = currentFromEmail.Split(new char[] { '[', ']', '{', '}', ';', '<', '>', ' ', ':', '"' }, StringSplitOptions.RemoveEmptyEntries); string toAddress = null; string fromAddress = null; foreach (string s in toArr) { if (s.Contains("@") && s.Contains(".")) { toAddress = s; break; } } foreach (string s in fromArr) { if (s.Contains("@") && s.Contains(".")) { fromAddress = s; break; } } if (toAddress == null || fromAddress == null) { continue; } string senderQueue = SenderData + fromAddress + "\\"; if (!Directory.Exists(senderQueue)) { Directory.CreateDirectory(senderQueue); } string msgQueue = senderQueue + toAddress + "\\"; if (!Directory.Exists(msgQueue)) { Directory.CreateDirectory(msgQueue); } File.WriteAllText(msgQueue + msgID + ".txt", b2); popClient.Delete(message); } Console.WriteLine("******************************"); Console.WriteLine("Time: " + DateTime.Now.ToString()); } catch (Exception ex) { Console.WriteLine(ex.Message); } finally { if (popClient != null) { popClient.Disconnect(); } } }