Exemplo n.º 1
0
        /// <summary>
        /// Method to send an email via SMTP
        /// </summary>
        /// <param name="fromEmailAddress">From <see cref="MailAddress"/>.</param>
        /// <param name="recipientEmailAddress">To <see cref="MailAddress"/>.</param>
        /// <param name="subject">The subject of the mail message.</param>
        /// <param name="content">The content of the mail message.</param>
        /// <param name="cancellationToken">Current cancellation token.</param>
        /// <returns></returns>
        public async Task <bool> SendAsync(MailAddress fromEmailAddress, MailAddress recipientEmailAddress, string subject, string content, CancellationToken cancellationToken)
        {
            if (fromEmailAddress is null)
            {
                throw new ArgumentNullException(nameof(fromEmailAddress));
            }

            if (recipientEmailAddress is null)
            {
                throw new ArgumentNullException(nameof(recipientEmailAddress));
            }

            MailMessage message = new MailMessage(fromEmailAddress.Address, recipientEmailAddress.Address)
            {
                Subject    = subject,
                Body       = content,
                IsBodyHtml = true
            };

            var client = _clientFactory.CreateInstance();

            try
            {
                await client.SendMailAsync(message, cancellationToken);
            } catch (SmtpException ex)
            {
                _logger.Error(ex);
                throw;
            }

            return(true);
        }