using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Net.Mail; using System.Text; using System.Threading.Tasks; using Microsoft.Extensions.Configuration; namespace GB5Shared.OTP { public class EmailOtpSender { private readonly IConfiguration _config; public EmailOtpSender(IConfiguration config) { _config = config; } public async Task SendAsync(string email, string otp) { var smtp = new SmtpClient( _config["Smtp:Host"], int.Parse(_config["Smtp:Port"]!) ) { Credentials = new NetworkCredential( _config["Smtp:User"], _config["Smtp:Password"] ), EnableSsl = true }; var mail = new MailMessage { From = new MailAddress(_config["Smtp:User"]!), Subject = "Password Reset OTP", Body = $"Your OTP is {otp}. It is valid for 5 minutes." }; mail.To.Add(email); await smtp.SendMailAsync(mail); } } }