.Net MailMessage-Objekt als EML-Datei speichern
Symptom
Von einem Webserver erzeugte E-Mails können wegen eines Fehlers (Netzwerk, Programm) nicht verschickt werden und gehen sofort verloren – das erschwert die Fehlersuche.
Ursache und Lösung
Tritt ein Fehler beim Versand auf, lässt sich der Fehler zwar protokollieren, die Original-Mail ist aber verloren. Abhilfe: das MailMessage-Objekt für die Analyse als EML-Datei speichern. EML-Dateien enthalten die komplette Mail inkl. Kopfdaten und lassen sich mit Outlook oder Thunderbird öffnen. Über eine Erweiterungsklasse lässt sich das direkt umsetzen:
using System.Net.Mail;
namespace MaxIt.TechCorner
{
public static class MailMessageExtensions
{
/// <summary>Stores a MailMessage as EML file.</summary>
public static void Archive(this MailMessage message)
{
using (SmtpClient diskclient = new SmtpClient("mysmtphost"))
{
diskclient.DeliveryMethod = SmtpDeliveryMethod.SpecifiedPickupDirectory;
diskclient.PickupDirectoryLocation = @"%TEMP%\mails";
diskclient.Send(message);
}
}
}
}
Durch DeliveryMethod = SpecifiedPickupDirectory wird die Mail beim „Versand“ als EML-Datei im Pfad PickupDirectoryLocation abgelegt. Verwendung im Fehlerfall:
try
{
smtpclient.Send(message);
}
catch (Exception ex)
{
message.Archive(); // Mail zur Fehlersuche als EML sichern
}
So steht neben den Log-Meldungen auch die E-Mail selbst (inkl. Anhänge) zur Analyse bereit.
Unterstützung von m.a.x. it
Bei diesem Thema unterstützt Sie die individuelle Softwareentwicklung von m.a.x. it.
Über m.a.x. it Die m.a.x. Informationstechnologie AG ist seit über 30 Jahren IT-Partner mittelständischer und großer Unternehmen in München und bietet maßgeschneiderte Lösungen und Services in den Bereichen Cloud, Cybersecurity, Netzwerk, Windows, Linux und Softwareentwicklung. Sie haben eine Frage zu diesem Artikel oder brauchen Unterstützung?
