4

Exchange Web サービス マネージ API 2.2 を使用してユーザーの受信トレイを監視しており、電子メールが新しいアイテムか、返信か、転送されたメッセージかを判断する必要があります。

メールが転送メールかどうかを確認する方法など、SO に関するさまざまな記事を見てきました。およびews c# を使用して電子メールが返信/応答であるかどうかを判断する方法はありますか? どちらも特定のケースで役立ちますが、返信と転送されたアイテムを区別する方法はまだわかりません。

最初の記事では、毎回 (転送または返信) 5 バイトが追加されるため、最後のアクションが何であったかはわかりません。

2 番目の記事ではInReplyTo、転送された電子メールのプロパティを調べると、元の送信者の電子メール アドレス (null ではない) が含まれています。

PR_ICON_INDEX、PR_LAST_VERB_EXECUTED、および PR_LAST_VERB_EXECUTION_TIME の値を調べるために拡張プロパティを使用することを提案するthisまたはthisなどの他の記事を見たことがあります。

私のコードは次のようになりますが、値を返すことはありませんlastVerbExecuted

var lastVerbExecutedProperty = new ExtendedPropertyDefinition(4225, MapiPropertyType.Integer);

var response = service.BindToItems(newMails, new PropertySet(BasePropertySet.IdOnly,  lastVerbExecutedProperty));
var items = response.Select(itemResponse => itemResponse.Item);

foreach (var item in items)
{
    object lastVerb;

    if (item.TryGetProperty(lastVerbExecutedProperty, out lastVerb))
    {
        // do something
    }
}
4

3 に答える 3

0

メールへの返信かどうかを判断するには、 EmailMessageオブジェクトInReplyToプロパティを使用できます。

EmailMessage mail = ((EmailMessage)Item.Bind(service, new ItemId(UniqueId)));

if (mail.InReplyTo == null)
    return;
else
    ..your code
于 2018-01-09T21:35:58.910 に答える