2

Outlook ストアは、開封確認をオブジェクトとして読み取りReportItemます。

ID特定の開封確認に属する元のメッセージの詳細を取得することは可能ですか? オブジェクトのプロパティをReportItem調べましたが、わかりません。

開封確認はさまざまな形式で送信されるため、受信確認の本文をプログラムで処理したくありません。代わりに、可能であれば Outlook から取得したいと考えています。

: このソリューションは、少なくとも Outlook 2003 から新しいバージョンまで機能するはずです。

4

3 に答える 3

3

ReportItemとソースの間の唯一のリンクはMailItemConversationIndexのようConversationTopicです。これは、Outlook が開封確認メッセージと関連するソースをリンクするために使用するものですMailItemでフィルタリングしConversationTopic、最初の 44 文字を使用しConversationIndexMailItem元のソースを特定するだけです。

サンプル会話インデックス

ソース インデックス: 01CDC1C35624E2A7BD18CF8C439CA73B62A052922657
レシート インデックス:01CDC1C35624E2A7BD18CF8C439CA73B62A0529226570000012862

Items.Restrictアイテムを特定の DASL フィルターに減らすために使用できます

DASL 検索:

[ConversationTopic] = 'read receipt ConversationTopic here'

ReportItem の親 MailItem の検索

Outlook.MailItem source = FindReadReceiptSourceMessage(ri);
string entryID = source.EntryID;
// ...
public static Outlook.MailItem FindReadReceiptSourceMessage(Outlook.ReportItem readReceipt) 
{
    Outlook.Folder inbox = Globals.ThisAddIn.Application.Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox) as Outlook.Folder;
    string sourceIndex = readReceipt.ConversationIndex.Substring(0, 44);
    string topicFilter = string.Format("[ConversationTopic] = '{0}'", readReceipt.ConversationTopic);
    Outlook.Items topicItems = inbox.Items.Restrict(topicFilter);
    return topicItems.OfType<Outlook.MailItem>().Where(c=>c.ConversationIndex.Equals(sourceIndex)).FirstOrDefault();
}
于 2012-11-13T19:35:28.377 に答える
0

アイテム「myitem」で Remdemption ライブラリを使用します。私の意見では、上記よりも優れています

    If vs_sender = "" Then 'read receipts
            Set objSMail = CreateObject("Redemption.SafeMailItem")
            objSMail.item = myitem
            vs_sender = objSMail.SenderEmailAddress
            vs_recipient = myitem.Recipients(1).Address
            Set objSMail = Nothing
    End If
于 2015-05-15T03:23:51.510 に答える