using System.Net; using System.Net.Mail; using AuthorBuddy.Web.Models; namespace AuthorBuddy.Web.Services; public class EmailService : IEmailService { private readonly SmtpSettings _settings; public EmailService(SmtpSettings settings) { _settings = settings; } public bool IsConfigured => _settings.Enabled && !string.IsNullOrEmpty(_settings.Host) && !string.IsNullOrEmpty(_settings.FromAddress); public async Task SendPasswordAsync(string recipientEmail, string recipientName, string newPassword) { if (!IsConfigured) return false; try { using var client = new SmtpClient(_settings.Host, _settings.Port) { EnableSsl = _settings.UseSsl, Credentials = string.IsNullOrEmpty(_settings.Username) ? null : new NetworkCredential(_settings.Username, _settings.Password) }; using var msg = new MailMessage { From = new MailAddress(_settings.FromAddress, _settings.FromName), Subject = "Ihr Author-Buddy-Passwort", Body = $"Hallo {recipientName},\n\n" + $"Ihr neues Passwort für Author Buddy lautet:\n\n" + $" {newPassword}\n\n" + $"Bitte ändern Sie es nach dem Login.\n\n" + $"Mit freundlichen Grüßen\nIhr Author-Buddy-Team", IsBodyHtml = false }; msg.To.Add(recipientEmail); await client.SendMailAsync(msg); return true; } catch { return false; } } }