Example #1
0
 /// <summary>
 /// Builds the multi part message.
 /// </summary>
 /// <param name="entity">The entity.</param>
 /// <param name="message">The message.</param>
 private void BuildMultiPartMessage(MimeEntity entity, SidePOPMailMessage message)
 {
     foreach (MimeEntity child in entity.Children)
     {
         if (string.Equals(child.ContentType.MediaType, MediaTypes.MultipartAlternative,
                           StringComparison.InvariantCultureIgnoreCase)
             ||
             string.Equals(child.ContentType.MediaType, MediaTypes.MultipartMixed,
                           StringComparison.InvariantCultureIgnoreCase))
         {
             BuildMultiPartMessage(child, message);
         }                 //if the message is mulitpart/alternative or multipart/mixed then the entity will have children needing parsed.
         else if (!IsAttachment(child) &&
                  (string.Equals(child.ContentType.MediaType, MediaTypes.TextPlain) ||
                   string.Equals(child.ContentType.MediaType, MediaTypes.TextHtml)))
         {
             message.AlternateViews.Add(CreateAlternateView(child));
             SetMessageBody(message, child);
         }                 //add the alternative views.
         else if (string.Equals(child.ContentType.MediaType, MediaTypes.MessageRfc822,
                                StringComparison.InvariantCultureIgnoreCase)
                  &&
                  child.ContentDisposition != null    // RFC 2183 specifies the 'Content-Disposition' header field, which is optional and valid for any MIME entity ("message" or "body part")
                  &&
                  string.Equals(child.ContentDisposition.DispositionType, DispositionTypeNames.Attachment,
                                StringComparison.InvariantCultureIgnoreCase))
         {
             message.Children.Add(ToMailMessageEx(child));
         }                 //create a child message and
         else if (IsAttachment(child))
         {
             message.Attachments.Add(CreateAttachment(child));
         }
     }
 }
Example #2
0
        /// <summary>
        /// Sets the message body.
        /// </summary>
        /// <param name="message">The message.</param>
        /// <param name="child">The child.</param>
        private void SetMessageBody(SidePOPMailMessage message, MimeEntity child)
        {
            Encoding encoding = child.GetEncoding();

            message.Body         = ContentDecoder.DecodeString(child);;
            message.BodyEncoding = encoding;
            message.IsBodyHtml   = string.Equals(MediaTypes.TextHtml, child.ContentType.MediaType, StringComparison.InvariantCultureIgnoreCase);
        }
            private static void received_a_message(object sender, MessageEventArgs e)
            {
                SidePOPMailMessage message      = e.Message;
                string             to_addresses = string.Empty;

                foreach (MailAddress address in message.To)
                {
                    to_addresses += string.Format("[{0}]", address.Address);
                }
                Debug.WriteLine(string.Format("|From:{0}|To:{1}|Subject:{2}|Body:{3}|",
                                              message.From.Address, to_addresses, message.Subject, message.Body));
                Console.WriteLine("{0}", message.From.Address);
                waiting_for_resource = false;
            }
        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 #5
0
        private static void run_regular()
        {
            foreach (AccountConfigurationElement account in SidePOPConfiguration.settings.accounts)
            {
                if (account.enabled)
                {
                    using (
                        DefaultPop3Client client = new DefaultPop3Client(account.hostName, account.hostPort, account.useSSL, account.userName,
                                                                         account.password)
                        )
                    {
                        //client.Trace += Console.WriteLine;
                        //connects to Pop3 Server, Executes POP3 USER and PASS
                        client.Authenticate();
                        client.GetStatistics();
                        foreach (Pop3ListItemResult item in client.List())
                        {
                            SidePOPMailMessage message = client.RetrieveExtendedMailMessage(item);

                            Log.bound_to(typeof(Program)).log_an_info_event_containing("Children.Count: {0}", message.Children.Count);
                            Log.bound_to(typeof(Program)).log_an_info_event_containing("message-id: {0}", message.MessageId);
                            Log.bound_to(typeof(Program)).log_an_info_event_containing("subject: {0}", message.Subject);
                            Log.bound_to(typeof(Program)).log_an_info_event_containing("Attachments.Count: {0}", message.Attachments.Count);
                            if (!message.IsBodyHtml)
                            {
                                Log.bound_to(typeof(Program)).log_an_info_event_containing("Message.Body: {0}", message.Body);
                            }
                            else
                            {
                                Log.bound_to(typeof(Program)).log_an_info_event_containing("Message.Body: {0}", message.Body);
                            }
                            //client.Delete(item);
                        }
                        client.SendNoOperation();
                        client.SendReset();
                        client.Quit();
                    }
                }
            }
        }
Example #6
0
        /// <summary>
        /// Toes the mail message ex.
        /// </summary>
        /// <param name="entity">The entity.</param>
        /// <returns></returns>
        private SidePOPMailMessage ToMailMessageEx(MimeEntity entity)
        {
            if (entity == null)
            {
                throw new ArgumentNullException("entity");
            }

            //parse standard headers and create base email.
            SidePOPMailMessage message = SidePOPMailMessage.CreateMailMessageFromEntity(entity);

            if (!string.IsNullOrEmpty(entity.ContentType.Boundary))
            {
                message = SidePOPMailMessage.CreateMailMessageFromEntity(entity);
                BuildMultiPartMessage(entity, message);
            }             //parse multipart message into sub parts.
            else if (string.Equals(entity.ContentType.MediaType, MediaTypes.MessageRfc822,
                                   StringComparison.InvariantCultureIgnoreCase))
            {
                //use the first child to create the multipart message.
                if (entity.Children.Count < 0)
                {
                    throw new Pop3Exception("Invalid child count on message/rfc822 entity.");
                }

                //create the mail message from the first child because it will
                //contain all of the mail headers.  The entity in this state
                //only contains simple content type headers indicating, disposition, type and description.
                //This means we can't create the mail message from this type as there is no
                //internet mail headers attached to this entity.
                message = SidePOPMailMessage.CreateMailMessageFromEntity(entity.Children[0]);
                BuildMultiPartMessage(entity, message);
            }             //parse nested message.
            else
            {
                message = SidePOPMailMessage.CreateMailMessageFromEntity(entity);
                BuildSinglePartMessage(entity, message);
            }             //Create single part message.

            return(message);
        }
 public MessageEventArgs(SidePOPMailMessage message) : base()
 {
     Message = message;
 }
Example #8
0
 public MessageEventArgs(SidePOPMailMessage message)
     : base()
 {
     Message = message;
 }
Example #9
0
 /// <summary>
 /// Builds the single part message.
 /// </summary>
 /// <param name="entity">The entity.</param>
 /// <param name="message">The message.</param>
 private void BuildSinglePartMessage(MimeEntity entity, SidePOPMailMessage message)
 {
     SetMessageBody(message, entity);
 }