Wie speichere ich ein MailMessage-Objekt auf der Festplatte? Das MailMessage-Objekt macht keine Save () -Methoden verfügbar.
Ich habe kein Problem, wenn es in irgendeinem Format speichert, * .eml oder * .msg. Irgendeine Idee, wie das geht?
Der Einfachheit halber zitiere ich nur eine Erklärung aus einem Connect-Element :
Sie können den SmtpClient tatsächlich so konfigurieren, dass E-Mails anstelle des Netzwerks an das Dateisystem gesendet werden. Sie können dies programmgesteuert mit dem folgenden Code tun:
SmtpClient client = new SmtpClient("mysmtphost"); client.DeliveryMethod = SmtpDeliveryMethod.SpecifiedPickupDirectory; client.PickupDirectoryLocation = @"C:\somedirectory"; client.Send(message);
Sie können dies auch in Ihrer Anwendungskonfigurationsdatei wie folgt einrichten:
<configuration>
<system.net>
<mailSettings>
<smtp deliveryMethod="SpecifiedPickupDirectory">
<specifiedPickupDirectory pickupDirectoryLocation="C:\somedirectory" />
</smtp>
</mailSettings>
</system.net>
</configuration>
Nach dem Senden der E-Mail sollte angezeigt werden, dass E-Mail-Dateien zu dem von Ihnen angegebenen Verzeichnis hinzugefügt werden. Sie können dann die E-Mail-Nachrichten im Batch-Modus von einem separaten Prozess senden lassen.
Sie sollten in der Lage sein, den leeren Konstruktor anstelle des aufgelisteten zu verwenden, da er ohnehin nicht gesendet wird.
Hier ist eine Erweiterungsmethode zum Konvertieren einer MailMessage in einen Stream mit den EML-Daten. Es ist offensichtlich ein kleiner Hack, da es das Dateisystem verwendet, aber es funktioniert.
Sie können dann den zurückgegebenen Stream nehmen und damit tun, was Sie möchten, einschließlich Speichern an einem anderen Speicherort auf der Festplatte oder Speichern in einem Datenbankfeld oder sogar E-Mail als Anhang.
quelle
Wenn Sie Mailkit verwenden . Schreiben Sie einfach den folgenden Code
quelle
Aus dem einen oder anderen Grund ist client.send fehlgeschlagen (direkt nach einem tatsächlichen Versand mit dieser Methode), sodass ich einen guten alten CDO- und ADODB-Stream angeschlossen habe. Ich musste auch CDO.message mit einer template.eml laden, bevor ich die .Message-Werte festlegte. Aber es funktioniert.
Da das obige C ist, ist hier eins für VB
quelle
Versuche dies
Bitte verwenden Sie diese 2 Referenzen (mit MailBee;) (mit MailBee.Mime;)
quelle