Come posso accedere a un allegato di posta elettronica di Outlook in C # senza salvarlo in una nuova posizione?

StackOverflow https://stackoverflow.com/questions/1608507

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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top