首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >从Active Directory获取电子邮件地址

从Active Directory获取电子邮件地址
EN

Stack Overflow用户
提问于 2015-02-05 01:50:50
回答 2查看 7.8K关注 0票数 0

我有通过邮件发送文档的Word VBA代码。收件人电子邮件地址将手动写入文本框中,然后自动提交到Outlook。

我希望通过使用人名(也是名字+姓氏的文本框)将电子邮件地址自动设置到该文本框中,将其与Active Directory进行比较,并检索适当的电子邮件地址。

如何在Word VBA中做到这一点?

EN

回答 2

Stack Overflow用户

发布于 2015-02-05 02:11:30

试试这个:它将根据用户名(name1 -不要传递第二个参数)或名字(name1)和姓氏(name2)来查询电子邮件。

代码语言:javascript
代码运行次数:0
运行
复制
Function UserNameToEmail(name1 As String, Optional name2 As String = "")

    Set rootDSE = GetObject("LDAP://RootDSE")
    base = "<LDAP://" & rootDSE.Get("defaultNamingContext") & ">"

    'filter on user objects with the given account name
    fltr = "(&(objectClass=user)(objectCategory=Person)"
    If Len(name2) = 0 Then
        fltr = fltr & "(sAMAccountName=" & name1 & "))"
    Else
        fltr = fltr & "(givenName=" & name1 & ")(sn=" & name2 & "))"
    End If

    'add other attributes according to your requirements
    attr = "mail,department,givenName,sn"
    scope = "subtree"

    Set conn = CreateObject("ADODB.Connection")
    conn.Provider = "ADsDSOObject"
    conn.Open "Active Directory Provider"

    Set cmd = CreateObject("ADODB.Command")
    Set cmd.ActiveConnection = conn
    cmd.CommandText = base & ";" & fltr & ";" & attr & ";" & scope

    Set rs = cmd.Execute

    If Not rs.EOF Then
      For Each f In rs.Fields
        Debug.Print f.Name & ": " & f.Value
      Next f
      UserNameToEmail = rs.Fields("mail").Value
    End If

    rs.Close
    conn.Close

End Function

仅供参考- ActiveDirectory字段列表:http://www.kouti.com/tables/userattributes.htm

票数 3
EN

Stack Overflow用户

发布于 2015-02-05 03:58:09

您是否正在使用Outlook对象模型?Callin Recipient.Resolve或Recipeints.ResolveAll将解析邮件收件人的显示姓名。

如果希望在不创建消息的情况下将名称解析为地址,请使用Namespace.CreateRecipient / Recipeint.Resolve。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28328036

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档