56 lines
1.7 KiB
C#
56 lines
1.7 KiB
C#
|
|
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<bool> 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;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|