internal static Email Convert(OpenPop.Mime.Message m) { System.Net.Mail.MailMessage message = m.ToMailMessage(); Email mail = new Email(); mail.From = message.From; mail.To = message.To; foreach (var item in message.Attachments) { mail.Attachments.Add(new Attachment(item.Name, item.ContentStream)); } return mail; }
/// <summary> /// Save Email /// </summary> /// <param name="email"></param> private void SaveEmail(OpenPop.Mime.Message email) { System.Text.UTF8Encoding enc = new System.Text.UTF8Encoding(); string strBody = ""; if (email.MessagePart.Body != null) { strBody = enc.GetString(email.MessagePart.Body); } else if (email.MessagePart.MessageParts[0].Body != null) { strBody = enc.GetString(email.MessagePart.MessageParts[0].Body); } else if (email.MessagePart.MessageParts[1].Body != null) { strBody = enc.GetString(email.MessagePart.MessageParts[1].Body); } var item = new EmailModel { Data = email.Headers.DateSent, Sender = email.Headers.From.MailAddress.ToString(), Title = email.Headers.Subject, MessageBody = strBody, Subject = email.Headers.Subject }; dbStore.EmailModel.Add(item); dbStore.SaveChanges(); }
private bool Spamfilter(OpenPop.Mime.Header.MessageHeader mailMessageHeader) { // Check if the messageheader contains a messageid, if it doesn't its most likely a spam mail and we are ignoring it. if (mailMessageHeader.MessageId != null) return true; // Return false because a true is not returned above. return false; }
OpenPop.Mime.MessagePart GetBodypartB( OpenPop.Mime.Header.MessageHeader headers, uint uid, string partNumber, bool seen = true, string mailbox = null) { AssertValid(); lock (sequenceLock) { PauseIdling(); SelectMailbox(mailbox); StringBuilder builder = new StringBuilder(); string tag = GetTag(); string response = SendCommandGetResponse(tag + "UID FETCH " + uid + " (BODY" + (seen ? null : ".PEEK") + "[" + partNumber + "])", false); using (var ms = new MemoryStream()) { while (response.StartsWith("*")) { Match m = Regex.Match(response, @"\* \d+ FETCH .* {(\d+)}"); if (m.Success) { int size = Convert.ToInt32(m.Groups[1].Value); var data = GetBytes(size); ms.Write(data, 0, data.Length); response = GetResponse(); if (!Regex.IsMatch(response, @"\)\s*$")) throw new BadServerResponseException(response); } else { // Some servers inline the data in the FETCH response line. m = Regex.Match(response, "\\* \\d+ FETCH \\(.*\"(.*)\".*\\)"); if (m.Success) builder.Append(m.Groups[1]); } response = GetResponse(false); } ResumeIdling(); if (!IsResponseOK(response, tag)) throw new BadServerResponseException(response); var type = typeof (OpenPop.Mime.MessagePart); var ctor = type.GetConstructor( BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance, Type.DefaultBinder, new [] { typeof (byte[]), typeof (OpenPop.Mime.Header.MessageHeader) }, new ParameterModifier[0]); try { return (OpenPop.Mime.MessagePart) ctor.Invoke( new object[] { ms.ToArray(), headers }); } catch (Exception exc) { throw new LocalException(exc); } } } }