EWS联系,查看电子邮件地址密钥

时间:2012-07-12 13:54:45

标签: c# exchangewebservices

因此,我正在处理的应用程序会提取特定的Outlook联系人并显示道具。我遇到的问题是,如果电子邮件地址字段存在,因为联系人可能没有电子邮件地址,我需要检查这一点。正在返回的错误消息是{“字典中没有给定的密钥。”}。

以下是代码。因此,它抱怨电子邮件地址密钥不存在,因此无法分配。那么如何在分配之前检查电子邮件密钥是否存在?

EWSForm.EmailAddresses = Contact.EmailAddresses[EmailAddressKey.EmailAddress1].Address;

2 个答案:

答案 0 :(得分:2)

或者使用不会引发异常的TryGetValue(),而是返回一个布尔值来指示它是否能够使用键返回值。

EmailAddress email;
var success = contact.EmailAddresses.TryGetVaue(EmailAddressKey.EmailAddress1, out email);

if (success)
{
    // Use email for task
    SendMail(email.Address);
}

答案 1 :(得分:1)

由于EmailAddresses的类型为EmailAddressDictionary,并且来自MSDN文档:

public sealed class EmailAddressDictionary : DictionaryProperty<EmailAddressKey,EmailAddressEntry>

您应该能够这样做(使用http://msdn.microsoft.com/en-us/library/dd634144(v=exchg.80).aspx中定义的Contains(Key)方法):

    if(   
        Contact.EmailAddresses.
            Contains( EmailAddressKey.EmailAddress1 ) 
        ) {
            EWSForm.EmailAddresses = 
                Contact.EmailAddresses[EmailAddressKey.EmailAddress1].Address;
    }