Pergunta

Eu estou usando Microsoft.Office.Interop.Outlook em C # para acessar uma caixa de correio e encontrar mensagens com anexos de arquivos específicos. Eu preciso para interagir com os anexos.

Atualmente, estou salvando o arquivo para um novo local e acessá-lo de lá. Este processo de cópia é me atrasando. Eu tinha idealmente como para acessar o arquivo de onde ele está sendo armazenado na memória, mas o campo Outlook.Attachment.PathName está retornando null.

As mensagens estão sendo armazenados em um servidor Exchange.

É possível acessá-las diretamente ou que eu preciso para continuar salvando os arquivos?

Foi útil?

Solução

Outlook.Attachment.PathName implica um local disco. O anexo é um arquivo; se você quiser interagir com ele, você tem que tratá-lo como um arquivo, e que os meios de salvá-lo para o disco local.

O objeto Outlook.Attachment não contém realmente o arquivo anexado; ele contém um link para o arquivo anexado, com alguns metadados associados.

Outras dicas

Eu não sei se é possível de forma alguma através do modelo de objeto Outlook, mas MAPI certamente permite isso.

Você precisa abrir a mensagem MAPIObject, um IMessage. A partir daí usar IMessage::OpenAttach() , que retorna um IAttach
O tamanho do anexo é armazenado em PR_ATTACH_SIZE, os dados reais em PR_ATTACH_DATA_BIN.

Como sempre, Redemption provavelmente tem uma maneira mais fácil de fazer isso.

Editar:
Acesso via MAPI é o Outlook faz internamente de qualquer maneira - deve ser razoavelmente rápido, pelo menos quando se usa o modo de transferência em cache

.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top