Пример #1
0
 private void OnMessageLoaderError(object sender, ExceptionAbortEventArgs args)
 {
     if (args.Exception is Pop3Exception ||
         args.Exception is System.Net.Sockets.SocketException ||
         args.Exception is System.IO.IOException)
     {
         EMailRouterPop3BoxMessageLoader loader = (EMailRouterPop3BoxMessageLoader)sender;
         EMailRouterPop3Box.UpdateStatistic(loader.Owner.EMailRouterPop3BoxId, false,
                                            args.Exception.Message, 0);
     }
     else
     {
         Log.WriteError(args.Exception.ToString());
     }
 }
Пример #2
0
        public void ReceiveMessages()
        {
            try
            {
                Pop3Connection connection = new Pop3Connection();

                //IPHostEntry hostInfo = Dns.GetHostEntry(Owner.Server);
                IPAddress[] addresses = Dns.GetHostAddresses(Owner.Server);

                IPEndPoint pop3ServerEndPoint = new IPEndPoint(addresses[0], Owner.Port);

                if (this.Owner.SecureConnectionType == Pop3SecureConnectionType.Ssl)
                {
                    connection.OpenSsl(pop3ServerEndPoint, Owner.Server);
                }
                else
                {
                    connection.Open(pop3ServerEndPoint);
                }

                if (this.Owner.SecureConnectionType == Pop3SecureConnectionType.Tls)
                {
                    connection.Stls(Owner.Server);
                }

                connection.User(Owner.Login);
                connection.Pass(Owner.Pass);

                Pop3Stat stat = connection.Stat();

                EMailRouterPop3Box.UpdateStatistic(this.Owner.EMailRouterPop3BoxId,
                                                   true,
                                                   string.Empty, stat.MessageCout);


                if (stat.MessageCout > 0)
                {
                    // Step 3. Request uidl.
                    Pop3UIDInfoList uidList = connection.Uidl();

                    foreach (Pop3UIDInfo uidItem in uidList)
                    {
                        try
                        {
                            // Step 4. Request message.
                            Pop3Message msg = connection.Retr(uidItem.ID);

                            // Step 5. Process message.
                            RaiseNewMessageEvent(msg);

                            // Step 6. Delete message from server.
                            connection.Dele(uidItem.ID);
                        }
                        catch (Exception ex)
                        {
                            if (RaiseErrorEvent(ex))
                            {
                                throw;
                            }
                        }
                    }
                }

                connection.Quit();
            }
            catch (Exception ex)
            {
                if (RaiseErrorEvent(ex))
                {
                    throw;
                }
            }
        }