3

给定一个电子邮件地址,我试图确定它是否是有效用户的登录地址。

我试过下面的代码,但它只有在用户之前被 Lync 客户端查询过的情况下才有效,否则用户被识别为未知。

using Microsoft.Lync.Model;
using Microsoft.Lync.Model.Extensibility;

private bool IsLyncUser(string eMail, out Microsoft.Lync.Model.Contact imContact)
{
    var lyncClient = LyncClient.GetClient();
    imContact = lyncClient.ContactManager.GetContactByUri(eMail);

    if (null != imContact)
    {
        try
        {
            var sourceType = (ContactSourceTypes)imContact.Settings[ContactSetting.Source];
            return (ContactSourceTypes)0 != (ContactSourceTypes.ExchangeService | ContactSourceTypes.GlobalAddressList | sourceType);
        }
        catch
        {
            imContact = null;
        }
    }
    return false;
}

问题:

  1. 为什么只有通过 Lync 客户端 GUI 查询用户时才加载数据?
  2. 如何“获取”数据,以便在查询时可用?
  3. 是否有更好的方法来查询电子邮件是否属于有效的 Lync 用户?
4

1 回答 1

1

我已经看到这个工作正常。也就是说: usinglyncClient.ContactManager.GetContactByUri()对我来说很好,即使被查询的地址不在客户的联系人列表中(并且没有被查询)。

不过,我正在做的一件事也是订阅存在更改。我想知道这是否是它对我有用的原因:查找未加载的联系人需要一段时间,所以可能是我的代码最初返回未知,然后在事件中更新。

还要检查一下:您确保您的电子邮件地址带有 SIP 前缀?(即格式为 sip:user@domain.com)。

于 2012-06-22T12:06:28.750 回答