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);
        }
예제 #3
0
        /// <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);
        }