.Net MailMessage-Objekt als EML-Datei speichern: Unterschied zwischen den Versionen
Ansp (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
imported>TechCorner-Redaktion Server-Software: Überarbeitung |
||
| (8 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
== | == Symptom == | ||
E- | Von einem Webserver erzeugte E-Mails können wegen eines Fehlers (Netzwerk, Programm) nicht verschickt werden und gehen sofort verloren – das erschwert die Fehlersuche. | ||
== | |||
Tritt ein Fehler beim | == Ursache und Lösung == | ||
EML-Dateien enthalten | Tritt ein Fehler beim Versand auf, lässt sich der Fehler zwar protokollieren, die Original-Mail ist aber verloren. Abhilfe: das <code>MailMessage</code>-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: | ||
<syntaxhighlight lang="csharp"> | |||
< | |||
using System.Net.Mail; | using System.Net.Mail; | ||
namespace MaxIt.TechCorner | 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); | |||
} | |||
} | |||
} | |||
} | } | ||
</ | </syntaxhighlight> | ||
Durch <code>DeliveryMethod = SpecifiedPickupDirectory</code> wird die Mail beim „Versand“ als EML-Datei im Pfad <code>PickupDirectoryLocation</code> abgelegt. Verwendung im Fehlerfall: | |||
<syntaxhighlight lang="csharp"> | |||
< | |||
try | try | ||
{ | { | ||
smtpclient.Send(message); | |||
} | } | ||
catch (Exception ex) | catch (Exception ex) | ||
{ | { | ||
message.Archive(); // Mail zur Fehlersuche als EML sichern | |||
} | } | ||
</ | </syntaxhighlight> | ||
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 [https://www.max-it.de/development/individuelle-softwareentwicklung/ individuelle Softwareentwicklung] von m.a.x. it. | |||
. | |||
{{Uebermax}} | |||
[[Kategorie:Server-Software]] | |||
Aktuelle Version vom 15. September 2026, 00:00 Uhr
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?
