私の見通しのアドインについては、ユニークなハッシュを計算し、このハッシュをサーバー/データベースに格納する必要があります。たとえば:メールを送信した後にメッセージIDを取得する
- [email protected]
- [email protected]
randompersonする@ gmailの:
は4人のユーザーがあります。 .com
ケース1:
ユーザー1はUser2のとユーザー3にメールを送信します。 User2はメールハッシュサーバサイドを保存したいので、addinボタンをクリックします。ハッシュは次のようなコードで計算されます
var accessor = mailItem.PropertyAccessor;
var subject = accessor.GetProperty(_PR_SUBJECT_W_TAG).ToString();
var messageId = accessor.GetProperty(_PR_INTERNET_MESSAGE_ID_W_TAG).ToString();
var hash = CalulateHash(subject + messageId);
このハッシュはサーバーに保存されています。 User3がメールのハッシュも保存しようとすると、彼は同じハッシュを取得します(件名とメッセージIDが同じである必要があります==>rfc822)、サーバーは知っています。これは非常にうまくいく。
ケース2: ユーザー1はUser2の、ユーザー3とrandompersonにメールを送信したいです。原因ランダルマンは、その会社に属していません、ユーザー1は、SendAndStore()
を使用します。メールが送信される前に、カスタムプロパティは、新しいアイテムがinboxfolderに追加された場合に通知を受ける可能性がある、
mailItem.UserProperties.Add("HandleAfterSent", MSOutlook.OlUserPropertyType.olText);
var aasProp = mailItem.UserProperties.Find("HandleAfterSent");
if (aasProp != null)
{
aasProp.Value = "some_value";
}
mailItem.Save();
SendMailItem(mailItem);
また新しいメールに追加されます。だから、私はフォルダーを見た。
inbox = outlookNameSpace.GetDefaultFolder(MSOutlook.OlDefaultFolders.olFolderSentMail);
items = inbox.Items;
items.ItemAdd += OnInboxItemAdded;
メールがSendMailItem(mailItem);
を経由して送信された場合、ハンドラは(あまりにも正常に動作します)と呼ばれています。しかし、残念ながら私は送信メールのハッシュ計算に問題があります。このメールにはMessage-IDがありません。誰かが今すぐ送信されたメールのMessage-IDを取得する方法を考えていますか? 私は自分でMessage-IDを設定しようとしましたが、MS Exchangeサーバーからオーバーライドされています。
EDIT: Outlookはキャッシュモードです。このシナリオのMessage-IDも取得する必要があります。(コメントに加えて)
EDIT2: ケース3: randompersonはユーザー1、とユーザー3ユーザー2にメールを送信したいです。原因ランダルアパートは、その会社に属していません、ユーザー1は、StoreFromInbox()
機能を使用します。 3人のすべてのユーザーの受信ボックスにあるメールには同じMessage-IDがあります。しかし、それらは異なる_PR_SEARCH_KEY_を持つので、このプロパティは使用できません。
これは関連性があります:http://stackoverflow.com/questions/19029082/pr-internet-message-id-returns-blank-when-sending-message –
それは意味があります。キャッシュモードがなければ動作します。しかし、キャッシュモードでもIDを取得する可能性はありますか? – Kooki