¿Cómo accedo a un archivo adjunto de correo electrónico de Outlook en C # sin guardarlo en una nueva ubicación?

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

Pregunta

Estoy usando Microsoft.Office.Interop.Outlook en C # para acceder a un buzón y encontrar mensajes con archivos adjuntos específicos. Necesito interactuar con los archivos adjuntos.

Actualmente, estoy guardando el archivo en una nueva ubicación y accediendo a él desde allí. Este proceso de copia me está ralentizando. Idealmente, me gustaría acceder al archivo desde donde se almacena en la memoria, pero el campo Outlook.Attachment.PathName devuelve un valor nulo.

Los mensajes se almacenan en un servidor de Exchange.

¿Es posible acceder a ellos directamente o necesito seguir guardando los archivos?

¿Fue útil?

Solución

Outlook.Attachment.PathName implica una ubicación de disco. El adjunto es un archivo; Si desea interactuar con él, debe tratarlo como un archivo, y eso significa guardarlo en el disco local.

El objeto Outlook.Attachment no contiene realmente el archivo adjunto; contiene un enlace al archivo adjunto, con algunos metadatos asociados.

Otros consejos

No sé si es posible de alguna manera a través del Modelo de objetos de Outlook, pero MAPI seguramente lo permite.

Debe abrir los mensajes MAPIObject , un IMessage . Desde allí use IMessage :: OpenAttach () , que devuelve un IAttach .
El tamaño del archivo adjunto se almacena en PR_ATTACH_SIZE , los datos reales en PR_ATTACH_DATA_BIN .

Como siempre, Redemption tiene una forma más fácil de hacer esto.

editar:
El acceso a través de MAPI es lo que Outlook hace internamente de todos modos: debe ser razonablemente rápido, al menos cuando se usa el Modo de caché de Exchange.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top