diff --git a/Elwig/Helpers/Utils.cs b/Elwig/Helpers/Utils.cs index 0741f0e..a0d8d50 100644 --- a/Elwig/Helpers/Utils.cs +++ b/Elwig/Helpers/Utils.cs @@ -21,6 +21,9 @@ using MailKit.Security; using Microsoft.EntityFrameworkCore; using System.Reflection; using System.Collections; +using Elwig.Documents; +using MimeKit; +using System.Windows.Input; namespace Elwig.Helpers { public static partial class Utils { @@ -438,6 +441,40 @@ namespace Elwig.Helpers { return client; } + public static async Task SendEmail(Member member, string subject, string text, IEnumerable docs) { + if (App.Config.Smtp == null) + return false; + + SmtpClient? client = null; + try { + Mouse.OverrideCursor = Cursors.AppStarting; + client = await GetSmtpClient(); + + using var msg = new MimeMessage(); + msg.From.Add(new MailboxAddress(App.Client.NameFull, App.Config.Smtp.Value.From)); + msg.To.AddRange(member.EmailAddresses.OrderBy(a => a.Nr).Select(a => new MailboxAddress(member.AdministrativeName, a.Address))); + msg.Subject = subject; + var body = new Multipart("mixed") { + new TextPart("plain") { Text = text } + }; + foreach (var doc in docs) { + var name = NormalizeFileName(doc.Title); + body.Add(doc.AsEmailAttachment($"{name}.pdf")); + } + msg.Body = body; + await client!.SendAsync(msg); + } catch (Exception exc) { + MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error); + return false; + } finally { + if (client != null) + await client.DisconnectAsync(true); + client?.Dispose(); + Mouse.OverrideCursor = null; + } + return true; + } + public static int? GetEntityIdentifier(object? obj) { if (obj == null) { return null;