Exemple #1
0
        private static void SetCarbonCopy(EmailSenderConfiguration configuration, MimeMessage emailMessage)
        {
            foreach (var ccRecipient in configuration.To.CarbonCopyRecipients)
            {
                emailMessage.Cc.Add(new MailboxAddress(ccRecipient.Value, ccRecipient.Key));
            }

            foreach (var bccRecipient in configuration.To.BlindCarbonCopyRecipients)
            {
                emailMessage.Bcc.Add(new MailboxAddress(bccRecipient.Value, bccRecipient.Key));
            }
        }
Exemple #2
0
        private static bool SetRecipients(EmailSenderConfiguration configuration, MimeMessage emailMessage)
        {
            var hasRecipients = false;

            if (configuration.To.Recipients.Any())
            {
                foreach (var recipient in configuration.To.Recipients)
                {
                    emailMessage.To.Add(new MailboxAddress(recipient.Value, recipient.Key));
                }

                hasRecipients = true;
            }

            if (!string.IsNullOrWhiteSpace(configuration.To.EmailAddress))
            {
                emailMessage.To.Add(new MailboxAddress(configuration.To.Name, configuration.To.EmailAddress));
                hasRecipients = true;
            }

            return(hasRecipients);
        }
Exemple #3
0
        public async Task SendEmailAsync(EmailSenderConfiguration configuration)
        {
            var emailMessage = new MimeMessage();

            emailMessage.From.Add(new MailboxAddress(configuration.From.Name, configuration.From.EmailAddress));
            if (!SetRecipients(configuration, emailMessage))
            {
                throw new InvalidOperationException("There are no recipients set.");
            }

            SetCarbonCopy(configuration, emailMessage);

            emailMessage.Subject = configuration.To.Subject;
            emailMessage.Body    = new TextPart(configuration.EmailFormat)
            {
                Text = configuration.EmailBody
            };
            _smtpClient.LocalDomain = configuration.Domain;
            await _smtpClient.ConnectAsync(configuration.SmtpServer, configuration.SmtpPort, configuration.SecureSocketOption).ConfigureAwait(false);

            await _smtpClient.SendAsync(emailMessage).ConfigureAwait(false);

            await _smtpClient.DisconnectAsync(true).ConfigureAwait(false);
        }