0

Visual FoxPro から、Outlook オートメーションを使用して電子メールを読み書きするプログラムがあります。

添付ファイルを取得して保存する機能はありますが、ファイルをディスクに保存せずに、添付ファイルの内容を文字列に読み取りたいと考えています。

以下の例では、Outlook をインスタンス化し、名前空間と現在のユーザーの受信トレイへの参照を取得します。次に、任意のメッセージ (受信トレイの 32 番) への参照と、メッセージの添付ファイルへの参照を取得します。

oOutlook = createobject('Outlook.Application')
oNamespace = oOutlook.GetNamespace('MAPI')
oInbox = oNamespace.GetDefaultFolder(olFolderInbox)
oMessage = Inbox.Items[32]
oAttachment = oMessage.Attachments[1]

この時点で、次のように呼び出します。

oAttachment.SaveAsFile('C:\Example\File1.xml')

ファイルをディスクに保存します。

私がやりたいのは、ファイルの内容をディスクに保存せずに文字列に読み取ることです。

この特定の例では、ファイルは XML です。

4

2 に答える 2

2

C++ または MAPI を使用している場合は、拡張 MAPI を使用して PR_ATTACH_DATA_BIN プロパティを IStream として開くことができます。

VFP ではRedemptionを試すことができます。オブジェクトのSafe*ItemRDOファミリの両方が、AsArray プロパティ (および AsText と AsStream) を公開します。

Outlook 2007 以降では、Attachment.PropertyAccessor.GetProperty を使用して PR_ATTACH_DATA_BIN プロパティ (DASL 名 "http://schemas.microsoft.com/mapi/proptag/0x37010102")

于 2013-10-29T13:57:47.523 に答える
0

残念ながら、Outlook の添付ファイルのサイズが 8KB を超える場合、サード パーティのライブラリを使用せずに Outlook の添付ファイルをメモリに保存する方法はありません。

Outlook 2007 では、添付ファイルが 8 KB 未満の場合、Attachment.PropertyAccessor.GetProperty を呼び出して PR_ATTACH_DATA_BIN プロパティをメモリに読み取ることができます。

前述のように、サードパーティのライブラリを使用する場合はRedemptionが最適です。

于 2015-01-08T11:12:11.883 に答える