2

如何确保我添加到 Outlook 通讯组列表的联系人同时显示姓名和电子邮件地址?这些联系人可能不存在于任何其他通讯簿中,仅存在于通讯组列表中。目前,它们仅显示为电子邮件地址(在两列中)。

替代文字 http://img52.imageshack.us/img52/1804/tempgg.jpg

这大致是我们正在使用的 VBA:

    Do Until RS.EOF

        //here's where we want to inject RS!FirstName, RS!Surname etc
        objRecipients.Add RS!Email
        objRecipients.Resolve

        RS.MoveNext
    Loop


    Set objDistList = contactsFolder.Items.Add("IPM.DistList")
    objDistList.DLName = "Whatever"

    objDistList.AddMembers objRecipients
    objDistList.Save

    etc
4

2 回答 2

1

感谢 Dick Kusleika 的回答,但Graeme 的回答让我想到了可能有更简单的方法。

这只是在分发列表条目中使用尖括号。如在 "Ringo Starr<rstarr@example.com>"

哪个工作得很好。

所以我原来的例子是这样的:

objRecipients.Add RS!FullName & "<" & RS!Email & ">"
于 2010-05-05T18:03:18.267 回答
1

我认为您必须为每个收件人创建一个 ContactItem 以便您可以定义名称。这是一个例子:

Sub testdistlist()

    Dim oRecips As Recipients
    Dim ciDist As DistListItem
    Dim ci As ContactItem
    Dim mi As MailItem

    Set mi = Application.CreateItem(olMailItem)
    Set oRecips = mi.Recipients

    Set ciDist = Application.CreateItem(olDistributionListItem)

    'replace this with your recordset loop
    Set ci = Application.CreateItem(olContactItem)
    ci.FirstName = "John"
    ci.LastName = "Lennon"
    ci.Email1Address = "jlennon@example.com"
    ci.Save

    oRecips.Add ci.FullName

    Set ci = Application.CreateItem(olContactItem)
    ci.FirstName = "Ringo"
    ci.LastName = "Starr"
    ci.Email1Address = "rstarr@example.com"
    ci.Save

    oRecips.Add ci.FullName
    'end replace

    ciDist.AddMembers oRecips

    ciDist.Save
    ciDist.Display
    mi.Close olDiscard

End Sub
于 2010-05-05T15:08:14.137 回答