Speichern Sie Mailmessage-Objekt an Dokumentsatz
-
10-12-2019 - |
Frage
Ich habe ein System.net.mail MailMessage-Objekt erhalten und möchte es nach dem Senden an einem Dokumentsatz speichern. Dieses Objekt enthält Absender, bis CC, HTML-Körper und Anhänge.
Wie kann ich es in einer Dokumentation speichern?
Ich habe einige Möglichkeiten gefunden, "Save" -Methoden zu verwenden, aber sie unterstützen nur den lokalen Pfad wie diesen auf codplex .
Am Ende möchte ich nur ein .eml oder .msg in meinem Ordner.
Dank Ihrer Antwort habe ich diese Arbeit in Ordnung: generasacodicetagpre.
Lösung
Judging from the link you reported, the Save method calls a FileStream object. Being a stream, the FileStream can be replaced by a MemoryStream.
// Create MemoryStream object
MemoryStream stream = new MemoryStream();
// Get reflection info for MailWriter contructor
// [omitted for brevity]
// Construct MailWriter object with our MemoryStream
object _mailWriter = _mailWriterContructor.Invoke(new object[] { stream });
Then, it is just a matter of saving this stream to your document set, like this:
SPFolder ds = web.GetFolder("http://server/documentsetname");
byte[] data = new byte[stream.Length];
stream.Read(data, 0, (int)stream.Length); //make sure this is reliable, otherwise find other ways to convert to a byte array
ds.Files.Add("http://server/shared%20documents/documentsetname/your.msg", data);
ds.Update();