【问题标题】:Get item.recipient with Outlook VBA使用 Outlook VBA 获取 item.recipient
【发布时间】:2015-05-13 05:22:48
【问题描述】:

我需要从 Outlook 2010 上的项目中获取收件人电子邮件地址。

我的代码如下:

sSQL = "SELECT id from dbo.database where email_address LIKE '" & Item.RecipientEmailAddress & "'

item.recipientEmailAddress 无效,但我需要类似的东西。

我知道您有一个代码调用 Item.SenderEmailAddress 但在这种情况下我需要收件人的电子邮件地址。

我已经看到了一些关于该主题的其他线程,但我没有设法使它们中的任何一个起作用。

【问题讨论】:

    标签: vba outlook ms-office


    【解决方案1】:

    对于一个“快速”的方法,您可以将Item.ToItem.CCItem.BCC 属性连接在一起,但是,这可能不是您想要的,因为有时这些属性存储显示名称而不是 SMTP 电子邮件地址。

    另一种方法是为每个收件人(TO、CC 和 BCC)使用包含 Recipient 对象的 Item.Recipients 集合,该对象包含 Address 属性。

    您可以遍历每个收件人并将它们连接在一起。像这样的:

    Dim recip As Recipient
    Dim allRecips As String
    
    For Each recip In item.Recipients
        If (Len(allRecips) > 0) Then allRecips = allRecips & "; "
        allRecips = allRecips & recip.Address
    Next
    

    【讨论】:

    • item.to 给了我收件人的姓名,但在这种情况下我需要电子邮件地址
    • 感谢编辑,看起来不错。我现在试一试。你认为我可以只选择收件人而不是抄送,密件抄送等吗?因为我基本上是一个电子邮件地址并通过数据库扫描它(如果有多个地址,它不会扫描数据库.
    • Recipient 类的属性之一是Type,您可以使用它来过滤它。在循环播放时,您可以使用 If (item.Type=olTo) Then...
    • 聪明,我会这样做的。这是下一个愚蠢的问题:我将我的代码:“sSQL =”SELECT id from dbo.dat...”(如原始帖子中所写)放在您的代码之后,并将变量设置为未知。我应该编写代码在“下一个”之前?
    • 它不应该像你原来的帖子那样写。它应该使用您连接在一起的新字符串,例如allRecips.
    【解决方案2】:

    MailItem 类的 Recipients 属性返回一个 Recipients 集合,该集合代表 Outlook 项目的所有收件人。

    Recipient 类的Type 属性返回或设置一个表示收件人类型的整数。对于 MailItem,该值可以是以下 OlMailRecipientType 常量之一:olBCC、olCC、olOriginator 或 olTo。

    Recipient 类还提供以下属性:

    • Name - 一个字符串值,表示收件人的显示名称。
    • Address - 表示收件人电子邮件地址的字符串。
    • AddressEntry - 与收件人对应的AddressEntry 对象。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多