新しい場所に保存せずにC#でOutlook電子メールの添付ファイルにアクセスするにはどうすればよいですか?
-
05-07-2019 - |
質問
C#で Microsoft.Office.Interop.Outlook
を使用してメールボックスにアクセスし、特定の添付ファイル付きのメッセージを検索しています。添付ファイルを操作する必要があります。
現在、ファイルを新しい場所に保存し、そこからアクセスしています。このコピープロセスは私を遅くしています。メモリ内のどこからでもファイルにアクセスしたいのですが、 Outlook.Attachment.PathName
フィールドがnullを返しています。
メッセージはExchangeサーバーに保存されています。
ファイルに直接アクセスすることは可能ですか、それともファイルの保存を続ける必要がありますか?
解決
Outlook.Attachment.PathName
はディスクの場所を意味します。添付ファイルはファイルです。やり取りする場合は、ファイルのように扱う必要があります。つまり、ローカルディスクに保存する必要があります。
Outlook.Attachment
オブジェクトには、実際には添付ファイルが含まれていません。添付ファイルへのリンクとメタデータが関連付けられています。
他のヒント
Outlook Object Modelを介して何らかの方法で可能かどうかはわかりませんが、MAPIで確実に可能になります。
IMessage
であるメッセージ MAPIObject
を開く必要があります。そこから IMessage :: OpenAttach()
を使用します。 a>、 IAttach
を返します。 。
添付ファイルのサイズは PR_ATTACH_SIZE
に格納され、実際のデータは PR_ATTACH_DATA_BIN
に格納されます。
いつものように、償還の方が簡単な方法でしょう。
編集:
とにかくOutlookは内部的にMAPIを介してアクセスします-少なくともExchangeキャッシュモードを使用する場合は、かなり高速でなければなりません。