【问题标题】:Outlook FROM field does NOT match Contacts Address BookOutlook FROM 字段与联系人通讯簿不匹配
【发布时间】:2014-12-09 22:10:47
【问题描述】:

平台:Outlook 2013 作为我的电子邮件客户端。

问题:我的联系人存储在联系人通讯录中,而不是 GAL;

当收到来自某人的电子邮件时,我在 FROM 字段中看到的内容与 Outlook 中我的联系人通讯录中的内容不同。

我明白了,我假设是用户在各自的电子邮件服务提供商中设置帐户的方式。

例如,我有“好朋友”,但是当我收到此人的电子邮件时,它会显示,例如“约翰·史密斯”。

如何让 Outlook “知道”以在我的联系人地址中显示我的联系人信息?

【问题讨论】:

  • 这是一道编程题吗?
  • @DmitryStreblechenko,是的,对不起,我应该更彻底。我想在 C# 中执行此操作,并将所有收到的电子邮件退回到联系人地址簿并通过电子邮件地址链接它们。

标签: email outlook exchange-server


【解决方案1】:

您可以读取发件人电子邮件地址 (MailItem.SenderEmailAddress),打开联系人文件夹 (Namespace.GetDefaultFolder(olFolerContacts)),使用 MAPIFolder.Items.Find 搜索匹配的联系人,并使用类似 "([Email1Address] = 'user@domain.demo') or ([Emai21Address] = 'user@domain.demo') or ([Email3Address] = 'user@domain.demo')" 的查询。

获得 ContactItem 对象后,读取其 FileAs 属性并使用 MailItem.PropertyAccessor.SetProperty 设置原始邮件的 PR_SENDER_NAME 和 PR_SENT_REPRESENTING_NAME 属性。属性的 DASL 名称是

"http://schemas.microsoft.com/mapi/proptag/0x0C1A001F"

"http://schemas.microsoft.com/mapi/proptag/0x0042001F"

【讨论】:

  • 效果很好,谢谢!我唯一需要注意的是,我可以通过 c# 程序以编程方式执行此操作,但我不知道如何操作 Outlook UI 来显示这些属性,例如在电子邮件的默认列表视图中,将名称附加到 FROM 列中显示的任何内容?
  • 您想在该列中显示什么?视图只能显示在消息上设置的属性。您可以修改视图以显示您的属性,并使用视图将显示的特殊属性标记每条消息。
  • 似乎由于不同的电子邮件提供商和/或用户如何注册他们的电子邮件帐户,我有一些电子邮件显示(1)只显示他们的名字或(2)只显示他们的电子邮件地址。我需要两者,而且我知道所有这些联系人都在我的联系人通讯录中,所以我想我可以拨打服务电话并找到相关帐户并将两者连接起来。这有帮助吗?感谢您的帮助。
  • 不,你不能那样做。 Outlook 从传入邮件的 MIME 标头中提取发件人姓名/地址 - 您可以在 PR_TRANSPORT_MESAGE_HEADERS 属性中看到该数据(使用 OutlookSpy 查看该项目)。欢迎您以编程方式更改名称/地址属性。 Outlook 并没有开箱即用。
  • 我了解 Outlook 不提供开箱即用的功能,这就是我走编程路径的原因。以编程方式,我能够获得需求所要求的属性,并且我应该得到您的建议,但是我现在正在寻求的是,我不知道如何将它(我的代码)集成到 Outlook 中,例如我要创建一个 Outlook 2013 加载项吗?如果是这样,我需要什么处理程序来包含我的代码,以便在通过主列表视图查看电子邮件时显示我的属性?那是我似乎找不到的。谢谢!
猜你喜欢
  • 2011-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-01
  • 1970-01-01
相关资源
最近更新 更多