public static void DecodeMailBody(string body, EmailModel email) { var emailBody = email.IsMultipart ? ProcessMailPartsRecursively(body, email.Boundary) : ProcessSinglePartEmail(body, email); if (emailBody == null) return; switch (emailBody.ContentEncoding.ToLower()) { case "quoted-printable": emailBody.Content = emailBody.Content.DecodeQuotedPrintable(emailBody.Charset); break; case "base64": emailBody.Content = emailBody.Content.DecodeBase64(emailBody.Charset); break; default: emailBody.Content = emailBody.Content; break; } FixEmailBody(emailBody); if (string.IsNullOrEmpty(email.Charset)) { emailBody.Content = ChangeEncoding(emailBody.Content, Encoding.UTF8, Encoding.GetEncoding(emailBody.Charset)); } email.Charset = emailBody.Charset; email.Body = emailBody.Content; }
public override void FetchMailBody(EmailModel email) { if (Account.DeleteReadEmails) { SendCommandAsync(new Pop3DeleteCommand(email.Id, null)); } }
public override void ParseResponseDetails(string message) { base.ParseResponseDetails(message); if (Status != "OK") return; var contentType = Body.GetHeaderValue("content-type"); Email = new EmailModel { Date = Body.GetHeaderValue("date").ParseDateString(), Subject = Body.GetHeaderValue("subject").DecodeEncodedWord().ReplaceAllNewLines(), From = Body.GetHeaderValue("from").DecodeEncodedWord(), Boundary = Body.GetHeaderValue("content-type", "boundary"), ContentTransferEncoding = Body.GetHeaderValue("content-transfer-encoding"), ContentType = contentType, Charset = Body.GetHeaderValue("content-type", "charset"), IsMultipart = contentType.ToLowerInvariant().Contains("multipart/") }; }
public override void ParseResponseDetails(string message) { var match = new Regex("(?<headers>.*?)\\r\\n\\r\\n(?<body>.*)\\.", RegexOptions.Singleline).Match(message); var headerSection = match.Groups["headers"].Value; var bodySection = match.Groups["body"].Value; var contentType = message.GetHeaderValue("content-type"); Email = new EmailModel { Date = headerSection.GetHeaderValue("date").ParseDateString(), Subject = headerSection.GetHeaderValue("subject").DecodeEncodedWord().ReplaceAllNewLines(), From = headerSection.GetHeaderValue("from").DecodeEncodedWord(), Boundary = headerSection.GetHeaderValue("content-type", "boundary"), ContentTransferEncoding = headerSection.GetHeaderValue("content-transfer-encoding"), ContentType = contentType, Charset = headerSection.GetHeaderValue("content-type", "charset"), IsMultipart = contentType.ToLowerInvariant().Contains("multipart/") }; EmailDecodingHelper.DecodeMailBody(bodySection, Email); }
public FetchMailBodyEvent(EmailModel email) { Email = email; }
public ShowMailWindowEvent(EmailModel email) { Email = email; }
public override void FetchMailBody(EmailModel email) { SendCommandAsync(new ImapFetchMailBodyCommand(email, r => EmailDecodingHelper.DecodeMailBody(r.MailBody, email))); }
public abstract void FetchMailBody(EmailModel email);
private static EmailBody ProcessSinglePartEmail(string body, EmailModel email) { return new EmailBody { Content = body, ContentEncoding = email.ContentTransferEncoding, ContentType = email.ContentType, Charset = email.Charset }; }
public MarkMailAsReadEvent(EmailModel email) { Email = email; }
public void FromEmailModel(EmailModel model) { Id = model.Id; AccountId = model.AccountId; Subject = model.Subject; Boundary = model.Boundary; ContentTransferEncoding = model.ContentTransferEncoding; ContentType = model.ContentType; Charset = model.Charset; IsMultipart = model.IsMultipart; Date = model.Date; From = model.From; MessageId = model.MessageId; InReplyTo = model.InReplyTo; Body = model.Body; IsRead = model.IsRead; }
public SerializableEmailModel(EmailModel emailModel) { FromEmailModel(emailModel); }