Exchange电子邮件是否始终在标头中包含SMTP地址?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Exchange电子邮件是否始终在标头中包含SMTP地址?相关的知识,希望对你有一定的参考价值。
以下是我对Outlook加载项开发的基本问题:
- SMTP MIME标头是否可用于所有邮件项目?甚至是“内部”Exchange电子邮件(Exchange用户到Exchange用户)? 我使用以下代码来获取标题,但我不确定它是否可靠: mailItem.PropertyAccessor.GetProperty( “http://schemas.microsoft.com/mapi/proptag/0x007D001E”);
- 这些标头是否始终包含From:,CC:和类似字段中的有效SMTP电子邮件地址?例如:
From: "Darth Vader" <dvader@empire.com> To: "Palpatine" <palps@empire.com> CC: "Boba Fett" <boba@empire.com>, "IG-88" <ig88@empire.com>, "Bossk" <bossk@empire.com>
与Active Directory可分辨名称相对,如...From: /O=EMPIRE PARTNERS/OU=EXCHANGE ADMINISTRATIVE GROUP (FYDIBOHF23SPDLT)/CN=RECIPIENTS/CN=VADER, DARTHBC4 TO: /O=EMPIRE PARTNERS/OU=EXCHANGE ADMINISTRATIVE GROUP (FYDIBOHF23SPDLT)/CN=RECIPIENTS/CN=PALPSBC4
这里有更多背景来澄清这些问题:
我正在开发一个Outlook加载项,它与Outlook中的每封电子邮件一起显示。它是一个侧边栏,显示有关当前电子邮件主题中所有参与者的信息。我的加载项需要参与者的SMTP电子邮件地址。
这一切都很好 - 除非线程上的用户是Exchange用户。在这种情况下,Outlook不允许我直接访问其SMTP地址。我必须遵循类似这篇文章的过程:Extract SMTP address from Exchange User in the FROM field of a message
String addressString = null;
try
{
ExchangeUser exchangeUser = address.GetExchangeUser();
if (exchangeUser != null)
{
addressString = exchangeUser.PrimarySmtpAddress;
}
} catch {
}
if (addressString == null)
{
addressString = address.Address;
}
这样做的问题是,如果用户的Exchange Server连接中断或延迟,则将此用户解析为SMTP地址可能会很慢。它甚至可以完全冻结Outlook。
回到我原来的问题 - 我能否可靠地期望电子邮件标题可用,如果可以,那些标题是否始终包含有效的SMTP电子邮件地址?
谢谢你的建议。
不,PR_TRANSPORT_MESSAGE_HEADERS
并不总是可用。仅在邮件转换为MIME并通过SMTP连接器传递时才设置。对于同一域中的本地Exchange邮箱之间传递的邮件,情况并非如此。
如果我是你我会
- 缓存地址 - 人们帐篷与同一个人对应
- 在大多数情况下,SMTP地址可直接在邮件本身上使用。例如。发件人有
PidTagSenderSmtpAddress_W
(DASL名称http://schemas.microsoft.com/mapi/proptag/0x5D01001F
),收件人有PR_SMTP_ADDRESS
(DASL名称http://schemas.microsoft.com/mapi/proptag/0x39FE001F
)。第一个可以使用MailItem.PropertyAccesssor.GetProperty访问,第二个可以使用Recipient.PropertyAccesssor.GetProperty访问。您可以在OutlookSpy中看到这些属性(单击IMessage按钮)。 - Outlook对象模型不支持多任务处理,但您可以在扩展MAPI(C ++或Delphi)或Redemption(任何语言)中的RDO系列对象中执行此操作。
以上是关于Exchange电子邮件是否始终在标头中包含SMTP地址?的主要内容,如果未能解决你的问题,请参考以下文章
是否可以在XMLHttpRequest标头中包含antiforgerytoken?
如何在 PHP 的 cURL POST HTTP 请求中包含授权标头?
在 HTTP 数据包(Cookie、标头或 JSON)中包含 JWT 令牌的正确方法