Hier ist die gleiche Lösung, aber als eine Erweiterung zu MailMessage
.
Ein Teil des Reflektionsaufwands wird minimiert, indem die Elemente ConstructorInfo
und MethodInfo
einmal im statischen Kontext erfasst werden.
Um das zugrunde liegende MemoryStream
zu erhalten:
Ich habe Logik in MimeKit implementiert, damit Sie eine System.Net.Mail.MailMessage in eine MimeKit.MimeMessage . Sobald Sie das getan haben, können Sie die Nachricht einfach in einen Stream schreiben:
%Vor%Dies erfordert kein Nachdenken in internen Methoden, was bedeutet, dass es nicht von der Laufzeit abhängig ist, was es viel tragbarer macht als die anderen bisher gegebenen Antworten.
Der Code, den ich gesehen habe, beruht auf Reflektion. Ich habe die online gefundenen Stichproben angepasst, um diese Methode zu erstellen:
%Vor% Sie können dann MemoryStream
in eine Zeichenkette oder was immer Sie brauchen konvertieren.
Update: Eine Methodensignatur hat sich in .NET 4.5 geändert, was das oben genannte bricht: Getting System.Net.Mail .MailMessage als MemoryStream in .NET 4.5 Beta