public long SendEmail(string context, ref Domain.Email.Models.Email email)
        {
            var emailMessage = Mapper.Map <EmailMessage>(email);

            emailMessage.Application = context;
            return(emailServiceProxy.SendEmail(emailMessage));
        }
        public static byte[] GetEmailBytes(Domain.Email.Models.Email email)
        {
            var mailMessage = Mapper.Map <System.Net.Mail.MailMessage>(email);

            foreach (var emailFileAttachment in email.FileAttachments)
            {
                mailMessage.Attachments.Add(
                    new System.Net.Mail.Attachment(
                        new MemoryStream(emailFileAttachment.Content),
                        emailFileAttachment.Name));
            }

            return(mailMessage.GetEmailContentBytes());
        }
        public string PersistEmail(ref Domain.Email.Models.Email email, string uniqueId)
        {
            if (null == repositoryBaseDirectory)
            {
                throw new InvalidProgramException(
                    "No Email repository base directory setting could be found in the application configuration file.");
            }

            var repositoryRelativeDirectory = string.Format(
                "{0}\\{1}\\{2}",
                DateTime.Today.Year,
                DateTime.Today.Month,
                DateTime.Today.Day);
            var repositoryFinalDirectory = Path.Combine(repositoryBaseDirectory, repositoryRelativeDirectory);
            DirectoryUtils.EnsureExists(repositoryFinalDirectory);

            var filename = string.Format("{0}.eml", uniqueId);
            foreach (var invalidCharacter in Path.GetInvalidFileNameChars())
            {
                if (filename.Contains(invalidCharacter))
                {
                    filename = filename.Replace(invalidCharacter, '_');
                }
            }

            var repositoryAbsolutePath = Path.Combine(repositoryFinalDirectory, filename);

            using (var fileStream = new FileStream(repositoryAbsolutePath, FileMode.Create))
            {
                if (email.MimeBytes == null)
                {
                    email.MimeBytes = EmailUtilities.GetEmailBytes(email);
                }

                fileStream.Write(email.MimeBytes, 0, email.MimeBytes.Length);
            }

            email.FileName = filename;
            email.PhysicalPath = repositoryFinalDirectory;

            return uniqueId;
        }
        private async Task <Domain.Email.Models.Email> ConvertEmailMessage(EmailMessage emailMessage)
        {
            logger.DebugFormat("Converting email message [{0}] to email...", emailMessage.Subject);

            var email = new Domain.Email.Models.Email
            {
                FromAddress     = emailMessage.From.ToString(),
                ToAddresses     = ConvertEmailAddressCollection(emailMessage.ToRecipients),
                CCAddresses     = ConvertEmailAddressCollection(emailMessage.CcRecipients),
                BCCAddresses    = ConvertEmailAddressCollection(emailMessage.BccRecipients),
                Subject         = emailMessage.Subject,
                Body            = emailMessage.Body,
                DateReceived    = DateTime.Now,
                FileAttachments = await ConvertAttachmentCollection(emailMessage.Attachments),
                MimeBytes       = emailMessage.MimeContent.Content
            };

            logger.DebugFormat("Email message [{0}] converted to email.", emailMessage.Subject);
            return(email);
        }
Exemple #5
0
 public string PersistEmail(ref Domain.Email.Models.Email email)
 {
     throw new NotImplementedException();
 }
 public string PersistEmail(ref Domain.Email.Models.Email email)
 {
     return PersistEmail(ref email, Guid.NewGuid().ToString());
 }
 public byte[] GetEmailMimeBytes(Domain.Email.Models.Email email)
 {
     return(EmailUtilities.GetEmailBytes(email));
 }
 public string PersistEmailToDisk(ref Domain.Email.Models.Email email)
 {
     return(diskPersister.PersistEmail(ref email));
 }
 public void PersistEmailToDatabase(ref Domain.Email.Models.Email email)
 {
     databasePersister.PersistEmail(ref email);
 }