/// <summary> /// Creates a MailMessage for the current MailAttribute instance. /// </summary> protected EmailMessage GenerateProspectiveMailMessage(MailAttributes mail) { //create base message var message = new EmailMessage { FromName = mail.From.DisplayName, FromEmail = mail.From.Address, To = mail.To.Union(mail.Cc).Select(t => new EmailAddress(t.Address, t.DisplayName)), BccAddress = mail.Bcc.Any() ? mail.Bcc.First().Address : null, Subject = mail.Subject, Important = mail.Priority == MailPriority.High ? true : false }; // We need to set Reply-To as a custom header if (mail.ReplyTo.Any()) { message.AddHeader("Reply-To", string.Join(" , ", mail.ReplyTo)); } // Adding content to the message foreach (var view in mail.AlternateViews) { var reader = new StreamReader(view.ContentStream, Encoding.UTF8, true, 1024, true); var body = reader.ReadToEnd(); if (view.ContentType.MediaType == MediaTypeNames.Text.Plain) { message.Text = body; } if (view.ContentType.MediaType == MediaTypeNames.Text.Html) { message.Html = body; } } // Going through headers and adding them to the message mail.Headers.ToList().ForEach(h => message.AddHeader(h.Key, h.Value)); // Adding the attachments var attachments = new List<EmailAttachment>(); foreach (var mailAttachment in mail.Attachments.Select(attachment => ActionMailerNext.Utils.AttachmentCollection.ModifyAttachmentProperties(attachment.Key, attachment.Value, false))) { using (var stream = new MemoryStream()) { mailAttachment.ContentStream.CopyTo(stream); var base64Data = Convert.ToBase64String(stream.ToArray()); attachments.Add(new EmailAttachment { Content = base64Data, Name = mailAttachment.Name, Type = mailAttachment.ContentType.MediaType, }); } } message.Attachments = attachments; return message; }
/// <summary> /// Creates a MailMessage for the current MailAttribute instance. /// </summary> protected EmailMessage GenerateProspectiveMailMessage(MailAttributes mail) { //create base message var message = new EmailMessage { from_name = mail.From.DisplayName, from_email = mail.From.Address, to = mail.To.Union(mail.Cc).Select(t => new EmailAddress(t.Address, t.DisplayName)), bcc_address = mail.Bcc.Any() ? mail.Bcc.First().Address : null, subject = mail.Subject, important = mail.Priority == MailPriority.High ? true : false }; // We need to set Reply-To as a custom header if (mail.ReplyTo.Any()) { message.AddHeader("Reply-To", string.Join(" , ", mail.ReplyTo)); } // Adding content to the message foreach (var view in mail.AlternateViews) { var reader = new StreamReader(view.ContentStream, Encoding.UTF8, true, 1024, true); var body = reader.ReadToEnd(); if (view.ContentType.MediaType == MediaTypeNames.Text.Plain) { message.text = body; } if (view.ContentType.MediaType == MediaTypeNames.Text.Html) { message.html = body; } } // Going through headers and adding them to the message mail.Headers.ToList().ForEach(h => message.AddHeader(h.Key, h.Value)); // Adding the attachments var attachments = new List <email_attachment>(); foreach (var mailAttachment in mail.Attachments.Select(attachment => Utils.AttachmentCollection.ModifyAttachmentProperties(attachment.Key, attachment.Value, false))) { using (var stream = new MemoryStream()) { mailAttachment.ContentStream.CopyTo(stream); var base64Data = Convert.ToBase64String(stream.ToArray()); attachments.Add(new email_attachment { content = base64Data, name = mailAttachment.Name, type = mailAttachment.ContentType.MediaType, }); } } message.attachments = attachments; return(message); }
/// <summary> /// Creates a MailMessage for the current MailAttribute instance. /// </summary> protected EmailMessage GenerateProspectiveMailMessage(MailAttributes mail) { var idnmapping = new IdnMapping(); var emailAddresses = mail.To .Select( t => { var domainSplit = t.Address.Split('@'); return(new EmailAddress(domainSplit[0] + "@" + idnmapping.GetAscii(domainSplit[1])) { Type = "to" }); }) .Union( mail.Cc.Select( t => { var domainSplit = t.Address.Split('@'); return(new EmailAddress(domainSplit[0] + "@" + idnmapping.GetAscii(domainSplit[1])) { Type = "cc" }); })) .Union( mail.Bcc.Select( t => { var domainSplit = t.Address.Split('@'); return(new EmailAddress(domainSplit[0] + "@" + idnmapping.GetAscii(domainSplit[1])) { Type = "bcc" }); })); //create base message var message = new EmailMessage { FromName = mail.From.DisplayName, FromEmail = mail.From.Address, To = emailAddresses, Subject = mail.Subject, Important = mail.Priority == MailPriority.High, PreserveRecipients = true }; // We need to set Reply-To as a custom header if (mail.ReplyTo.Any()) { message.AddHeader("Reply-To", string.Join(" , ", mail.ReplyTo)); } // Adding content to the message foreach (var view in mail.AlternateViews) { var reader = new StreamReader(view.ContentStream, Encoding.UTF8, true, 1024, true); var body = reader.ReadToEnd(); if (view.ContentType.MediaType == MediaTypeNames.Text.Plain) { message.Text = body; } if (view.ContentType.MediaType == MediaTypeNames.Text.Html) { message.Html = body; } } // Going through headers and adding them to the message mail.Headers.ToList().ForEach(h => message.AddHeader(h.Key, h.Value)); // Adding the attachments var attachments = new List <EmailAttachment>(); foreach (var mailAttachment in mail.Attachments.Select(attachment => Utils.AttachmentCollection.ModifyAttachmentProperties(attachment.Key, attachment.Value, false))) { using (var stream = new MemoryStream()) { mailAttachment.ContentStream.CopyTo(stream); var base64Data = Convert.ToBase64String(stream.ToArray()); attachments.Add(new EmailAttachment { Content = base64Data, Name = ReplaceGermanCharacters(mailAttachment.Name), Type = mailAttachment.ContentType.MediaType, }); } } message.Attachments = attachments; return(message); }