Wie kann ich eine E-Mail Outlook-Anlage in C #, ohne es an eine neue Position zu speichern?
-
05-07-2019 - |
Frage
Ich bin mit Microsoft.Office.Interop.Outlook
in C # ein Postfach zuzugreifen und Nachrichten mit bestimmten Dateianhängen zu finden. Ich muss mit den Anlagen zu interagieren.
Derzeit bin ich die Datei auf einen neuen Standort und von dort aus erreichbar. Dieser Kopiervorgang verlangsamt mich. Ich würde idealerweise auf die Datei zugreifen möchten, wo immer es im Speicher gespeichert wird, aber das Outlook.Attachment.PathName
Feld zurückkehrt null.
Die Nachrichten auf einem Exchange-Server gespeichert werden.
Ist es möglich, sie direkt zugreifen oder muss ich auch weiterhin brauchen, um die Dateien zu speichern?
Lösung
Outlook.Attachment.PathName
impliziert eine Plattenposition. Der Anhang ist eine Datei; wenn Sie mit ihm interagieren wollen, müssen Sie es wie eine Datei zu behandeln, und das bedeutet, es heraus zu der lokalen Festplatte zu speichern.
Das Outlook.Attachment
Objekt tatsächlich nicht die angehängte Datei enthält; es enthält einen Link zu der angehängten Datei, mit einigen zugehörigen Metadaten.
Andere Tipps
Ich weiß nicht, seine, wenn möglich in irgendeiner Weise über das Outlook-Objektmodell, aber MAPI sicher ermöglicht es Ihnen, dass.
Sie müssen die Nachrichten MAPIObject
öffnen, eine IMessage
. Verwendung Von dort IMessage::OpenAttach()
, die eine IAttach
.
Die Anlagengröße wird in PR_ATTACH_SIZE
gespeichert, die eigentlichen Daten in PR_ATTACH_DATA_BIN
.
Wie immer Redemption wahrscheinlich hat einen einfacheren Weg, dies zu tun.
Bearbeiten
Der Zugriff über MAPI ist, was Outlook funktioniert intern sowieso -. Sollte einigermaßen schnell, zumindest bei der Verwendung von Exchange-Cache-Modus