Example #1
0
        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;
            }
        }
Example #2
0
        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:"));
        }
Example #4
0
    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 &gt; 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);
        }
Example #8
0
        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;
            }
        }
Example #9
0
        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);
        }
Example #11
0
        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;
            }
        }
Example #12
0
 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);
     }
 }
Example #13
0
        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" ) );
        }
Example #14
0
        public void ListFail( )
        {
            Pop3Client pop3Client = new Pop3Client( new PlainMessagesDummyNetworkOperations( ) );

            pop3Client.List( );
        }
Example #15
0
        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 );
        }
Example #16
0
        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 &gt; 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();
        }
Example #19
0
        /// <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();
            }
        }
Example #20
0
        /// <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();
            }
        }
Example #21
0
        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:" ) );
        }
Example #22
0
        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();
                }
            }
        }