private static EmailMessage ConvertToDto(System.Net.Mail.MailMessage message, MessageUidDTO messageUidDto, DateTime sentDate) { var emailMessageDto = new EmailMessage { FromAddress = message.From.Address, FromDisplayName = message.From.DisplayName, Recipients = String.Join("; ", message.To.Select(address => address.Address).ToArray()), Subject = message.Subject, ContentType = ContentTypeEnum.Email, Body = message.Body, SendDate = sentDate, MessageUidDto = messageUidDto }; foreach (var attachment in message.Attachments) { var fileId = AttachmentFolder.Save(attachment.ContentStream); emailMessageDto.EmailAttachments.Add(new LocalStoredAttachment { FileId = fileId, FileName = attachment.Name }); } return(emailMessageDto); }
/// <summary> /// Converts MailBee mail message to .NET FX mail message. /// </summary> /// <param name="mailBeeMailMessage">MailBee mail message.</param> /// <returns>.NET FX mail message.</returns> private static System.Net.Mail.MailMessage ConvertToNetMailMessage(MailMessage mailBeeMailMessage) { var mailMessage = new System.Net.Mail.MailMessage { Sender = new MailAddress(mailBeeMailMessage.From.AsString), Subject = mailBeeMailMessage.Subject, Body = mailBeeMailMessage.IsBodyAvail("text/html", false) ? mailBeeMailMessage.BodyHtmlText : mailBeeMailMessage.BodyPlainText, IsBodyHtml = mailBeeMailMessage.IsBodyAvail("text/html", false), From = new MailAddress(mailBeeMailMessage.From.AsString), }; foreach (EmailAddress emailAddress in mailBeeMailMessage.To) { mailMessage.To.Add(new MailAddress(emailAddress.AsString)); } foreach (EmailAddress emailAddress in mailBeeMailMessage.Cc) { mailMessage.CC.Add(new MailAddress(emailAddress.AsString)); } foreach (EmailAddress emailAddress in mailBeeMailMessage.Bcc) { mailMessage.Bcc.Add(new MailAddress(emailAddress.AsString)); } switch (mailBeeMailMessage.Priority) { case MailPriority.Low: case MailPriority.Lowest: mailMessage.Priority = System.Net.Mail.MailPriority.Low; break; case MailPriority.None: case MailPriority.Normal: mailMessage.Priority = System.Net.Mail.MailPriority.Normal; break; case MailPriority.High: case MailPriority.Highest: mailMessage.Priority = System.Net.Mail.MailPriority.High; break; } foreach (Attachment mailBeeAttachment in mailBeeMailMessage.Attachments) { if ((!mailBeeAttachment.IsFile && !mailBeeAttachment.IsInline) && !mailBeeAttachment.IsMessageInside) { continue; } var attachmentName = GetAttachmentName(mailBeeAttachment); var newAttachment = new System.Net.Mail.Attachment( new MemoryStream(mailBeeAttachment.GetData()), attachmentName, mailBeeAttachment.ContentType); if (mailBeeAttachment.IsInline && !String.IsNullOrEmpty(mailBeeAttachment.ContentID)) { newAttachment.Name = mailBeeAttachment.ContentID; } mailMessage.Attachments.Add(newAttachment); } return(mailMessage); }
/// <summary> /// Converts MailBee mail message to .NET FX mail message. /// </summary> /// <param name="mailBeeMailMessage">MailBee mail message.</param> /// <returns>.NET FX mail message.</returns> private System.Net.Mail.MailMessage ConvertToNetMailMessage(MailMessage mailBeeMailMessage) { var mailMessage = new System.Net.Mail.MailMessage { Sender = new MailAddress(mailBeeMailMessage.From.AsString), Subject = mailBeeMailMessage.Subject, Body = mailBeeMailMessage.IsBodyAvail("text/html", false) ? mailBeeMailMessage.BodyHtmlText : mailBeeMailMessage.BodyPlainText, IsBodyHtml = mailBeeMailMessage.IsBodyAvail("text/html", false), From = new MailAddress(mailBeeMailMessage.From.AsString), }; foreach (var emailAddress in mailBeeMailMessage.To.Cast <EmailAddress>().Where(emailAddress => !mailMessage.To.TryAdd(emailAddress.AsString))) { _log.WarnFormat("To address \"{0}\" is not in a recognized format.", emailAddress.AsString); } foreach (var emailAddress in mailBeeMailMessage.Cc.Cast <EmailAddress>().Where(emailAddress => !mailMessage.CC.TryAdd(emailAddress.AsString))) { _log.WarnFormat("Cc address \"{0}\" is not in a recognized format.", emailAddress.AsString); } foreach (var emailAddress in mailBeeMailMessage.Bcc.Cast <EmailAddress>().Where(emailAddress => !mailMessage.Bcc.TryAdd(emailAddress.AsString))) { _log.WarnFormat("Bcc address \"{0}\" is not in a recognized format.", emailAddress.AsString); } switch (mailBeeMailMessage.Priority) { case MailPriority.Low: case MailPriority.Lowest: mailMessage.Priority = System.Net.Mail.MailPriority.Low; break; case MailPriority.None: case MailPriority.Normal: mailMessage.Priority = System.Net.Mail.MailPriority.Normal; break; case MailPriority.High: case MailPriority.Highest: mailMessage.Priority = System.Net.Mail.MailPriority.High; break; } foreach (Attachment mailBeeAttachment in mailBeeMailMessage.Attachments) { if ((!mailBeeAttachment.IsFile && !mailBeeAttachment.IsInline) && !mailBeeAttachment.IsMessageInside) { continue; } var attachmentName = GetAttachmentName(mailBeeAttachment); var newAttachment = new System.Net.Mail.Attachment( new MemoryStream(mailBeeAttachment.GetData()), attachmentName, mailBeeAttachment.ContentType); if (mailBeeAttachment.IsInline && !String.IsNullOrEmpty(mailBeeAttachment.ContentID)) { newAttachment.Name = mailBeeAttachment.ContentID; } mailMessage.Attachments.Add(newAttachment); } return(mailMessage); }