/// <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);
        }
Esempio n. 2
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);
        }