【发布时间】:2018-08-20 22:00:38
【问题描述】:
以下是关于 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 电子邮件地址?
感谢您的建议。
【问题讨论】:
-
“这些标头是否总是包含有效的 SMTP 电子邮件地址”?不,我可以编写一些错误的代码并发送一封电子邮件,其中地址 = 一些乱码,您的服务器仍然会接收它。并且取决于您拥有的邮件服务器,它可能会或可能不会丢弃邮件
-
感谢您的回复。我不担心边缘情况或这样的滥用。所以为了澄清,我想知道日常使用,有效的 SMTP 消息(即非格式错误)。有问题的邮件服务器是 Exchange。那么 Exchange 是否会简单地不发送标头和 SMTP 地址,即使它们在技术上是有效的?
标签: c# outlook smtp exchange-server outlook-addin