Come posso accedere a un allegato di posta elettronica di Outlook in C # senza salvarlo in una nuova posizione?
-
05-07-2019 - |
Domanda
Sto usando Microsoft.Office.Interop.Outlook
in C # per accedere a una casella di posta e trovare messaggi con allegati specifici. Devo interagire con gli allegati.
Attualmente, sto salvando il file in una nuova posizione e accedendo da lì. Questo processo di copia mi sta rallentando. Idealmente, vorrei accedere al file da qualsiasi posizione venga archiviato in memoria, ma il campo Outlook.Attachment.PathName
sta restituendo null.
I messaggi vengono archiviati su un server Exchange.
È possibile accedervi direttamente o devo continuare a salvare i file?
Soluzione
Outlook.Attachment.PathName
implica una posizione del disco. L'allegato è un file; se vuoi interagire con esso, devi trattarlo come un file, e questo significa salvarlo sul disco locale.
L'oggetto Outlook.Attachment
in realtà non contiene il file allegato; contiene un collegamento al file allegato, con alcuni metadati associati.
Altri suggerimenti
Non so se sia possibile in alcun modo tramite il modello a oggetti di Outlook, ma MAPI sicuramente lo consente.
Devi aprire i messaggi MAPIObject
, un IMessage
. Da lì usa IMessage :: OpenAttach ()
, che restituisce un IAttach
.
Le dimensioni dell'allegato sono memorizzate in PR_ATTACH_SIZE
, i dati effettivi in ?? PR_ATTACH_DATA_BIN
.
Come sempre, Redemption probabilmente ha un modo più semplice per farlo.
modifica
L'accesso tramite MAPI è comunque ciò che fa Outlook internamente: dovrebbe essere ragionevolmente veloce, almeno quando si utilizza la modalità cache di Exchange.