save-System.Net.E-mail.MailMessage als .msg-Datei
Baue ich eine Anwendung, wo ich bin verpflichtet, erstellen ein MailMessage (System.Net.E-mail.MailMessage) und speichern Sie es auf der Festplatte .msg Endung nicht .eml
Unten ist die Methode, die ich verwende zum speichern einer MailMessage als .msg-Datei:
public static void Save(MailMessage Message, string FileName)
{
Assembly assembly = typeof(SmtpClient).Assembly;
Type _mailWriterType =
assembly.GetType("System.Net.Mail.MailWriter");
using (FileStream _fileStream =
new FileStream(FileName, FileMode.Create))
{
//Get reflection info for MailWriter contructor
ConstructorInfo _mailWriterContructor =
_mailWriterType.GetConstructor(
BindingFlags.Instance | BindingFlags.NonPublic,
null,
new Type[] { typeof(Stream) },
null);
//Construct MailWriter object with our FileStream
object _mailWriter =
_mailWriterContructor.Invoke(new object[] { _fileStream });
//Get reflection info for Send() method on MailMessage
MethodInfo _sendMethod =
typeof(MailMessage).GetMethod(
"Send",
BindingFlags.Instance | BindingFlags.NonPublic);
//Call method passing in MailWriter
_sendMethod.Invoke(
Message,
BindingFlags.Instance | BindingFlags.NonPublic,
null,
new object[] { _mailWriter, true },
null);
//Finally get reflection info for Close() method on our MailWriter
MethodInfo _closeMethod =
_mailWriter.GetType().GetMethod(
"Close",
BindingFlags.Instance | BindingFlags.NonPublic);
//Call close method
_closeMethod.Invoke(
_mailWriter,
BindingFlags.Instance | BindingFlags.NonPublic,
null,
new object[] { },
null);
}
}
Aber die gespeicherten msg-Datei nicht öffnen, und unten ist die Fehlermeldung:
Kann nicht geöffnet werden"die Datei xyz.msg.Die Datei ist möglicherweise nicht vorhanden, Sie haben eventuell keine Berechtigung, um es zu öffnen oder es kann sein, öffnen Sie von einem anderen Programm...."
Meine Frage ist: , Wie Sie sparen System.Net.E-mail.MailMessage als msg-Datei?
InformationsquelleAutor Gaby | 2010-03-11
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier Ryan schlägt vor, eine einfache und gute Möglichkeit, es zu tun, ohne jede Anstrengung.
Können Sie auch setzen Sie diese in Ihrer Anwendung-Konfigurations-Datei wie folgt:
Warum downvoting? Es ist nicht "die" Antwort, aber es ist ein guter Vorschlag...
Gaby,hast du eine Antwort darauf?
Jason, ich glaube nicht, dass dieser link nur die Antwort ungültig, da der link auf eine andere Seite, ich habe Jedoch das Zitat eingefügt 😉
InformationsquelleAutor Arsen Mkrtchyan
Wenn du meinst Outlook MSG-Datei-format aktivieren Sie die MSG-format-Spezifikation, veröffentlicht von Microsoft. Folgende Antwort ähnliche Frage könnte auch helfen.
InformationsquelleAutor Martin Vobr
Wenn Sie beziehen sich auf Outlook .msg-Datei, dies kann nicht getan werden, werden nativ in .NET.
Outlook .msg-Datei ist ein zusammengesetztes Dokument, so dass, würden Sie brauchen, um es zu speichern in diesem format, und sicher sein, setzen Sie die entsprechenden Eigenschaften in Ihrer genauen Position.
Müssen Sie entweder schreiben Sie Ihre eigenen, verwenden Sie ein 3rd-party-oder Outlook interop.
Sorry,
Dave
InformationsquelleAutor dave wanta
Schauen Sie dieses kurze Beispiel mit Outlook Interop-Bibliothek Erstellen einer Outlook-Nachricht-Datei mit C# . Es ist nicht genau das, was haben Sie schon gefragt, aber es ist ein Weg, um kopieren Werte von einem zum anderen - manuell.
InformationsquelleAutor Michał Powaga
Microsoft Support KB-Artikel:
INFO: Save Message MSG Compound-Datei
InformationsquelleAutor dex black
Die Fehlermeldungen von Outlook ist, weil der .msg Erweiterung. Ich bin mit der gleichen Methode zu speichern MailMessage-Objekte auf der Festplatte und habe festgestellt, dass die Datei nur öffnen Sie in outlook mit einer Ausdehnung von .eml.
InformationsquelleAutor TimS