尝试从所有约会项目收件人获取 SMTP 地址



我迭代所有 AppointmentItem.Recipients。对于每个收件人,我使用以下实用程序方法来检索收件人"正常"SMTP电子邮件地址:

为此,我使用了来自堆栈溢出的发布:从收件人对象获取电子邮件地址

public static string GetSmtpAddress(Outlook.AddressEntry addressEntry)
{
String smtpAddress;
if (addressEntry.Type == "EX")
{
if (addressEntry.AddressEntryUserType == Outlook.OlAddressEntryUserType.olExchangeUserAddressEntry
|| addressEntry.AddressEntryUserType == Outlook.OlAddressEntryUserType.olExchangeRemoteUserAddressEntry)
{
Outlook.ExchangeUser user = addressEntry.GetExchangeUser();
smtpAddress = user != null ? user.PrimarySmtpAddress : null;
}
else if (addressEntry.AddressEntryUserType == Outlook.OlAddressEntryUserType.olOutlookContactAddressEntry)
{
//returns the actual contact but it has 3 email properties (Email1Address, Email2Address, Email3Address). 
//How to identify which email has the user selected
Outlook.ContactItem cont = addressEntry.GetContact();
String OABID = addressEntry.ID;
String typ = OABID.Substring(29 * 2, 2);
if (typ=="00")
{
smtpAddress = cont.Email1Address; <!-- Strange Emailadress
}else if (typ=="01")
{
smtpAddress = cont.Email1Address;
} else
{
smtpAddress = cont.Email2Address;
}
} else
{
smtpAddress = "";
}
}
else if (addressEntry.Type == "SMTP")
{
smtpAddress = addressEntry.Address;
}
else
{
smtpAddress = "";
}
return smtpAddress;
}

标有<-Strage Email的行检索到一个看起来很奇怪的电子邮件地址:它看起来像/o=Exchange xxxxx的东西xxxx.。最后它还包含 smtp 地址。

我正在寻找的是一个 100% 强大的实用程序函数,无论收件人是什么地址类型、Exchange 用户、地址簿用户或其他什么,它都可以检索正确的 SMTP 地址。任何帮助非常感谢。

此致敬意 汉内斯

如果 GAL 条目不再存在,则所有投注都将关闭。在触摸Recipient.AddressEntry之前,请检查 SMTP 地址在收件人表中是否可用 - 使用Recipient.PropertyAccessor.GetProperty读取PR_SMTP_ADDRESS属性(DASL 名称"http://schemas.microsoft.com/mapi/proptag/0x39FE001F"(。如果不存在,则读取PR_ADDRTYPE属性 ("http://schemas.microsoft.com/mapi/proptag/0x3002001F"( - 这等效于AddressEntry对象上的Type属性,不幸的是Recipient对象不会公开该属性。如果是"SMTP",只需使用Recipient.Address属性。并且仅当不是时,使用上面需要Recipient.AddressEntry的函数。

看看与OutlookSpy的约会(我是它的作者( - 单击IMessage按钮,转到GetRecipientTable选项卡以检查PR_SMTP_ADDRESS属性是否可用

最新更新