public async Task <Result> SendEmailAsync(Action <IConfirmationEmailBuilder> sendOptions)
        {
            var emailBuilder = new ConfirmationEmailBuilder();

            sendOptions(emailBuilder);
            Email email = emailBuilder.Build();

            try
            {
                MimeMessage message = BuildMessage(email);

                using (var smtp = new SmtpClient())
                {
                    //smtp.LocalDomain = "locahost";
                    await smtp.ConnectAsync(emailOptions.Host, emailOptions.Port, emailOptions.EnableSSL);

                    await smtp.AuthenticateAsync(emailOptions.Username, emailOptions.Password);

                    await smtp.SendAsync(message);

                    await smtp.DisconnectAsync(true);
                }
            }
            catch (Exception ex)
            {
#if DEBUG
                logger.LogError(ex, "ConfirmationEmailSender.Send() Sending email failed: Email.To {Email}, Subject {subject}",
                                email.To, email.Subject);

                return(Result.Failure("Could send message to this email. Ensure you provided a valid email"));
#endif
            }

            return(Result.Success());
        }
Ejemplo n.º 2
0
        private async Task <bool> SendEmail(User user)
        {
            var emailActionLink = Url.Action("ConfirmEmail", "Auth",
                                             new { Token = user.RegistrationToken, Username = user.Username },
                                             ControllerContext.HttpContext.Request.Scheme);

            var message = ConfirmationEmailBuilder.BuildConfirmationMessage(user.Email, user.Username, emailActionLink);

            return(await _emailService.SendEmail(message));
        }