새 위치에 저장하지 않고 C#의 Outlook 이메일 첨부 파일에 액세스하려면 어떻게해야합니까?
-
05-07-2019 - |
문제
나는 사용 중입니다 Microsoft.Office.Interop.Outlook
C#에서 사서함에 액세스하고 특정 파일 첨부 파일이있는 메시지를 찾으십시오. 첨부 파일과 상호 작용해야합니다.
현재 파일을 새 위치에 저장하고 거기에서 액세스하고 있습니다. 이 복사 프로세스로 인해 속도가 느려집니다. 나는 이상적으로 메모리에 저장되는 곳에서 파일에 액세스하는 것을 좋아하지만 Outlook.Attachment.PathName
필드가 널 돌아오고 있습니다.
메시지는 Exchange 서버에 저장됩니다.
직접 액세스 할 수 있습니까? 아니면 파일을 계속 저장해야합니까?
해결책
Outlook.Attachment.PathName
디스크 위치를 의미합니다. 첨부 파일은 파일입니다. 상호 작용하려면 파일처럼 취급해야하며 로컬 디스크에 저장하는 것을 의미합니다.
그만큼 Outlook.Attachment
객체에는 실제로 첨부 된 파일이 포함되어 있지 않습니다. 일부 관련 메타 데이터와 함께 첨부 된 파일에 대한 링크가 포함되어 있습니다.
다른 팁
Outlook Object 모델을 통해 어떤 식 으로든 가능한지 모르겠지만 Mapi는 반드시 당신을 허용합니다.
메시지를 열어야합니다 MAPIObject
, an IMessage
. 거기에서 사용합니다 IMessage::OpenAttach()
, 반환합니다 IAttach
.
부착 크기가 저장됩니다 PR_ATTACH_SIZE
, 실제 데이터 PR_ATTACH_DATA_BIN
.
언제나처럼, 구원 아마도 더 쉬운 방법이있을 것입니다.
편집하다:
MAPI를 통한 액세스는 어쨌든 Outlook이 내부적으로하는 일입니다. 적어도 Exchange 캐시 모드를 사용할 때는 합리적으로 빠르야합니다.