using System.Net; using System.Net.Mail; using Application.Services.Email; using Microsoft.Extensions.Options; namespace Infrastructure.Services.Email; public class EmailService(IOptions smtpSettings) : IEmailService { private readonly SmtpSettings _smtpSettings = smtpSettings.Value; public async Task SendEmailAsync(string to, string subject, string body) { using (var client = new SmtpClient(_smtpSettings.Host, _smtpSettings.Port)) { client.EnableSsl = _smtpSettings.EnableSsl; client.Credentials = new NetworkCredential(_smtpSettings.UserName, _smtpSettings.Password); var mailMessage = new MailMessage { From = new MailAddress(_smtpSettings.From), Subject = subject, Body = body, IsBodyHtml = true }; mailMessage.To.Add(to); await client.SendMailAsync(mailMessage); } } public string GenerateCredentialsEmailBody(string name, string email, string password) { var template = @"

Welcome to HealthcareManager

You can now log in using the following credentials:

Email: {email}

Password: {password}

Thank you for choosing our services and we wish you an amazing day!

"; return template.Replace("{name}", name).Replace("{email}", email).Replace("{password}", password); } public string GenerateResetCredentialsEmailBody(string name, string email, string password) { var template = @"

Password Reset Successful

Hello {name},

Your password has been successfully reset. You can now log in to your HealthcareManager account using your new password.

If you did not request a password reset, please contact our support team immediately.

For security reasons, it's recommended to keep your password confidential and to change it regularly.

"; return template.Replace("{name}", name).Replace("{email}", email).Replace("{password}", password); } public string GenerateMessageNotificationEmail(string senderName, string receiverName, string chatUrl) { var template = @"

New Message Notification

Hello {receiverName},

You have received a new message from {senderName}.

Click here to view the message

Thank you for using HealthcareManager!

"; return template.Replace("{senderName}", senderName) .Replace("{receiverName}", receiverName) .Replace("{chatUrl}", chatUrl); } public string GetSuccessfulRegistrationSubject() { return "Welcome to HealthcareManager!"; } public string GetSuccessfulPasswordResetSubject() { return "Password reset successfully!"; } public string GetMessageNotificationSubject() { return "New Message Notification!"; } }