在C#VSTO中获取/更改安全发件人列表和阻止发件人列表

时间:2014-07-24 21:10:44

标签: outlook vsto mapi

我正在开发一个Outlook 2010加载项,需要在关注电子邮件中找到的链接之前提示用户。在此过程中,我想让用户选择信任或阻止电子邮件的发件人,因此我需要访问这两个列表。我意识到Outlook OM没有公开垃圾邮件/垃圾邮件选项。尽管我使用Redemption成功完成了任务,但不幸的是我的雇主不允许使用它,所以我需要找到另一种方法。我发现此帖子(Get Safe sender list in Outlook 2007 C# Add in)指向MAPI属性或注册表项的方向。 我的偏好是MAPI道具,但我不确定该属性属于哪个对象。它是默认商店的财产吗?

Outlook.Store obj = Application.Session.DefaultStore;
const string PR_SPAM_TRUSTED_SENDERS_W =
        "http://schemas.microsoft.com/mapi/proptag/0x001f0418";

Outlook.PropertyAccessor pa = obj.PropertyAccessor;
string list= pa.GetProperty(PR_SPAM_TRUSTED_SENDERS_W).ToString();

不幸的是我收到了一条错误消息(翻译成英文),比如'对象没有这样的属性'。在生产中,它必须与连接到Exchange 2007邮箱的Outlook客户端一起使用。

2 个答案:

答案 0 :(得分:1)

好的发现了。实际属性称为PidTagExtendedRuleMessageCondition,Blob格式分别在MS-OXCSPAM和MS-OXORULE中描述。

答案 1 :(得分:0)

该属性未在商店本身上设置,它设置在收件箱文件夹中的隐藏邮件(可使用MAPIFolder.GetStorage访问),邮件类为IPM.ExtendedRule.Message,PR_RuleMsgProvider =“JunkEmailRule”。您应该能够在OutlookSpy中看到隐藏的消息(单击IMAPIFolder,转到“关联的内容”选项卡)。存储的数据位于PR_EXTENDED_RULE_ACTIONS属性中。