private async Task <bool> SendOTPEmailAsync(OTPTracker person) { try { var pathToFile = _env.WebRootPath + Path.DirectorySeparatorChar.ToString() + "Templates" + Path.DirectorySeparatorChar.ToString() + "EmailTemplate" + Path.DirectorySeparatorChar.ToString() + "otp.html"; var builder = new BodyBuilder(); var callbackuri = $"{_uRIs.MainClient}identity/otp/login?OTP={person.OTP}&Email={person.Email}"; var encodedUri = HttpUtility.UrlPathEncode(callbackuri.ToString()); using (StreamReader SourceReader = File.OpenText(pathToFile)) { builder.HtmlBody = SourceReader.ReadToEnd(); } string messageBody = string.Format(builder.HtmlBody, person.OTP, encodedUri); var emailMessage = new EmailMessage(); emailMessage.Subject = "OTP Verification"; emailMessage.Content = messageBody.Replace('{', ' ').Replace('}', ' '); emailMessage.SendIt = true; emailMessage.FromAddresses = new List <EmailAddress>(); emailMessage.ToAddresses.Add(new EmailAddress { Address = person.Email }); await _mailservice.Send(emailMessage); return(await Task.Run(() => true)); } catch (Exception ex) { _logger.Error(ex.ToString()); return(true); } }
private async Task <OTPTracker> ProduceOtpAsync(cor_useraccount user) { Random rnd = new Random(); var otp = (rnd.Next(100000, 999999)).ToString(); var newOtp = new OTPTracker { DateIssued = DateTime.Now, ExpiryDate = DateTime.Now.AddMinutes(2), OTP = otp, UserId = user.Id, Email = user.Email, }; _logger.Information("I am in ProduceOtpAsync "); await _security.OTPTracker.AddAsync(newOtp); return(newOtp); }