public async Task SendAsync(MailMessageDTO message) { if (message.Attachments.Any()) { throw new NotSupportedException("Amazon SES API doesn't support e-mail attachments!"); } using (var client = new AmazonSimpleEmailServiceClient(awsAccessKeyId, awsSecretAccessKey)) { var sendRequest = new SendEmailRequest { Source = message.From.Address, Destination = new Destination { ToAddresses = message.To.Select(t => t.Address).ToList(), CcAddresses = message.Cc.Select(t => t.Address).ToList(), BccAddresses = message.Bcc.Select(t => t.Address).ToList() }, ReplyToAddresses = message.ReplyTo.Select(t => t.Address).ToList(), Message = new Message { Subject = new Content(message.Subject), Body = new Body { Text = new Content(message.BodyText), Html = new Content(message.BodyHtml) } } }; await client.SendEmailAsync(sendRequest); } }
public async Task SendAsync(MailMessageDTO message) { if (message == null) { throw new ArgumentNullException(nameof(message)); } // Get MIME message var msg = message.ToMimeMessage(); // Send message using (var mx = new SmtpClient()) { await mx.ConnectAsync(this.HostName, this.Port, AllowSsl?SecureSocketOptions.Auto : SecureSocketOptions.None); if (AllowSsl) { mx.ServerCertificateValidationCallback = this.ServerCertificateValidationCallback; } if (!string.IsNullOrEmpty(this.UserName) && !string.IsNullOrEmpty(this.Password)) { await mx.AuthenticateAsync(this.UserName, this.Password); } await mx.SendAsync(msg); await mx.DisconnectAsync(true); } }
public static MailMessage ToMailMessage(this MailMessageDTO message) { var mailMessage = new MailMessage() { Sender = message.Sender.ToMailAddress(), Subject = message.Subject }; // set body if (message.BodyHtml != null) { mailMessage.Body = message.BodyHtml; mailMessage.IsBodyHtml = true; if (message.BodyText != null) { var plainTextView = AlternateView.CreateAlternateViewFromString(message.BodyText, null, "text/plain"); mailMessage.AlternateViews.Add(plainTextView); } } else { mailMessage.Body = message.BodyText; mailMessage.IsBodyHtml = false; } // set contacts if (message.From != null) { mailMessage.From = message.From.ToMailAddress(); } foreach (var address in message.To) { mailMessage.To.Add(address.ToMailAddress()); } foreach (var address in message.Bcc) { mailMessage.Bcc.Add(address.ToMailAddress()); } foreach (var attachment in message.Attachments) { mailMessage.Attachments.Add(attachment.ToAttachment()); } foreach (var address in message.Cc) { mailMessage.CC.Add(address.ToMailAddress()); } foreach (var address in message.ReplyTo) { mailMessage.ReplyToList.Add(address.ToMailAddress()); } foreach (var header in message.CustomHeaders) { mailMessage.Headers.Add(header.Key, header.Value); } return(mailMessage); }
public async Task SendAsync(MailMessageDTO message) { if (message == null) { throw new ArgumentNullException(nameof(message)); } var mailMessage = message.ToMailMessage(); await SmtpClient.SendMailAsync(mailMessage); }
public async Task SendHtmlMail_Test() { var mx = new PickupFolderMailSender(CreateTempFolder("html")); var msg = new MailMessageDTO { From = new MailAddressDTO("*****@*****.**", "Example Sender"), Subject = "Žluťoučký kůň úpěl ďábelské ódy - subject", BodyHtml = "<html><body><p>Žluťoučký kůň úpěl ďábelské ódy <b>v HTML</b>.</p></body></html>" }; msg.To.Add(new MailAddressDTO("*****@*****.**", "Example Recipient")); await mx.SendAsync(msg); Assert.True(EmlFileExists(mx.FolderName)); }
public async Task SendPlainTextMail_Test() { var mx = new PickupFolderMailSender(CreateTempFolder("plain")); var msg = new MailMessageDTO { From = new MailAddressDTO("*****@*****.**", "Example Sender"), Subject = "Žluťoučký kůň úpěl ďábelské ódy - subject", BodyText = "Žluťoučký kůň úpěl ďábelské ódy - text." }; msg.To.Add(new MailAddressDTO("*****@*****.**", "Example Recipient")); await mx.SendAsync(msg); Assert.True(EmlFileExists(mx.FolderName)); }
public async Task Directory_ShouldBeCreated_IfNotExists() { var folderName = GetTempFolderName("not-created"); var mx = new PickupFolderMailSender(folderName); var msg = new MailMessageDTO { From = new MailAddressDTO("*****@*****.**", "Example Sender"), Subject = "Žluťoučký kůň úpěl ďábelské ódy - subject", BodyText = "Žluťoučký kůň úpěl ďábelské ódy - text." }; msg.To.Add(new MailAddressDTO("*****@*****.**", "Example Recipient")); await mx.SendAsync(msg); Assert.True(EmlFileExists(folderName)); }
public async Task SendAlternateMail_Test() { var tempFolder = CreateTempFolder("alternate"); var mx = new SystemSmtpClientMailSender(CreateSmtpClient(tempFolder)); var msg = new MailMessageDTO { From = new MailAddressDTO("*****@*****.**", "Example Sender"), Subject = "Žluťoučký kůň úpěl ďábelské ódy - subject", BodyText = "Žluťoučký kůň úpěl ďábelské ódy - text.", BodyHtml = "<html><body><p>Žluťoučký kůň úpěl ďábelské ódy <b>v HTML</b>.</p></body></html>" }; msg.To.Add(new MailAddressDTO("*****@*****.**", "Example Recipient")); await mx.SendAsync(msg); Assert.True(EmlFileExists(tempFolder)); }
public Task SendAsync(MailMessageDTO message) { var web = new SendGridClient(apiKey); var msg = new SendGridMessage() { From = ConvertMailAddress(message.From), ReplyTo = message.ReplyTo.Select(ConvertMailAddress).FirstOrDefault(), Subject = message.Subject }; msg.AddTos(message.To.Select(ConvertMailAddress).ToList()); if (message.Cc.Count > 0) { msg.AddCcs(message.Cc.Select(ConvertMailAddress).ToList()); } if (message.Bcc.Count > 0) { msg.AddBccs(message.Bcc.Select(ConvertMailAddress).ToList()); } if (message.Attachments.Count > 0) { msg.AddAttachments(message.Attachments.Select(ConvertAttachment).ToList()); } if (string.IsNullOrWhiteSpace(message.BodyHtml)) { msg.PlainTextContent = message.BodyText; } else { msg.HtmlContent = message.BodyHtml; } ProcessTemplate(msg, message.MailingTemplate); OnMessageSending(msg); return(web.SendEmailAsync(msg)); }
public static MimeMessage ToMimeMessage(this MailMessageDTO dto) { var msg = new MimeMessage(); // Add standard header fields msg.From.Add(dto.From.ToMailboxAddress()); msg.To.AddRange(dto.To.ToMailboxAddress()); msg.Cc.AddRange(dto.Cc.ToMailboxAddress()); msg.Bcc.AddRange(dto.Bcc.ToMailboxAddress()); msg.Sender = dto.Sender.ToMailboxAddress(); msg.ReplyTo.AddRange(dto.ReplyTo.ToMailboxAddress()); msg.Subject = dto.Subject; // Add custom header fields foreach (var item in dto.CustomHeaders) { msg.Headers.Add(item.Key, item.Value); } // Construct body var bb = new BodyBuilder { TextBody = dto.BodyText, HtmlBody = dto.BodyHtml }; // Add attachments foreach (var item in dto.Attachments) { ContentType ct; var r = ContentType.TryParse(item.MimeType, out ct); if (!r) { ct = new ContentType("application", "octet-stream"); } bb.Attachments.Add(item.Name, item.Stream, ct); } msg.Body = bb.ToMessageBody(); return(msg); }
public async Task SendMailWithAttachment_Test() { var mx = new PickupFolderMailSender(CreateTempFolder("attachment")); var msg = new MailMessageDTO { From = new MailAddressDTO("*****@*****.**", "Example Sender"), Subject = "Žluťoučký kůň úpěl ďábelské ódy - subject", BodyText = "Žluťoučký kůň úpěl ďábelské ódy - text.", BodyHtml = "<html><body><p>Žluťoučký kůň úpěl ďábelské ódy <b>v HTML</b>.</p></body></html>" }; msg.To.Add(new MailAddressDTO("*****@*****.**", "Example Recipient")); using (var ms = new MemoryStream(System.Text.Encoding.UTF8.GetBytes("Test attachment file"))) { msg.Attachments.Add(new AttachmentDTO { Name = "attachment.txt", MimeType = "text/plain", Stream = ms }); await mx.SendAsync(msg); } Assert.True(EmlFileExists(mx.FolderName)); }
public MessageSendingEventArgs(MailMessageDTO message) { Message = message; }