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()); }
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)); }