/// <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)); } } }
/// <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); }
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(); } } } }
/// <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; }
/// <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); }