发送"On Behalf Of"时始终抄送



我经常代表其他用户发送电子邮件。我想使用 VBA 在每次从该用户/代表该用户发送电子邮件时自动抄送该用户。

我不熟悉 VBA for Outlook,但我认为您可以编写一个 if 语句,上面写着"如果从 UserX 发送消息,cc UserX"。每次代表发送电子邮件时,代码都应自动运行。

SentOnBehalfOfName很棘手。在发送项目之前,它通常是空的。

使用此OutlookSession中的此代码,您应该会发现它是空白的。

Private Sub Application_ItemSend(ByVal item As Object, Cancel As Boolean)
    Dim myRecipient As Recipient
    Debug.Print " item.SentOnBehalfOfName - " & item.SentOnBehalfOfName
    If item.SentOnBehalfOfName = "someone@somewhere.com" Then
        Set myRecipient = item.Recipients.Add("Someone Else")
        myRecipient.Type = olCC
        item.Recipients.ResolveAll
    End If
End Sub

至少有一种方法可以解决这个问题:

Sub createSentOnBehalf()
    Dim objMsg As mailitem
    Set objMsg = Application.CreateItem(olMailItem)
    objMsg.SentOnBehalfOfName = "someone@somewhere.com"
    objMsg.Display
    Set objMsg = Nothing
End Sub
Sub replySentOnBehalf()
    Dim objMsg As mailitem
    Set objMsg = ActiveInspector.currentItem.reply
    objMsg.SentOnBehalfOfName = "someone@somewhere.com"
    objMsg.Display
    Set objMsg = Nothing
End Sub

编辑:刚刚意识到您可以在创建/回复时设置抄送,而不是等到ItemSend。

编辑2:从项目末尾移动抄送代码

Sub createSentOnBehalf()
    Dim objMsg As mailitem
    Dim myRecipient As Recipient
    Set objMsg = Application.CreateItem(olMailItem)
    objMsg.SentOnBehalfOfName = "someone@somewhere.com"
    Set myRecipient = objMsg.Recipients.Add("Someone Else")
    myRecipient.Type = olCC
    objMsg.Recipients.ResolveAll
    objMsg.Display
    Set objMsg = Nothing
End Sub

这将完成您正在寻找的内容(这是"Always CC yourself Outlook"的第一个Google结果)http://www.extendoffice.com/documents/outlook/1108-outlook-auto-cc.html

  1. 启动您的Outlook 2013或2010,并确保您位于邮件部分。然后单击"主页>规则">"管理规则和警报"。

  2. 选择"管理规则和警报"
  3. 选项后,将弹出"规则和警报"对话框。在"电子邮件规则"下,单击"新建规则"选项。

  4. 在"规则向导"中,单击"对我发送的邮件应用规则",然后单击"下一步"继续。

  5. 然后弹出另一个对话框。

    (1.)在步骤1中,检查指定的帐户框。在步骤2中,请单击单词 - 指定。(2.)然后点击 帐户 下拉列表以选择要应用此规则的帐户。

  6. 选择帐户后,单击"确定"返回到上一个窗口,您将看到所选帐户显示在"规则向导"中。然后点击下一步按钮。

  7. (1.)在此向导中,检查 抄送给个人或公共组的消息 框,然后单击 人员或公共组 在步骤2.
    (2.)在"规则地址"对话框中,双击您的抄送收件人以将地址添加到> 文本框,(如果我想抄送自己,我将在 收件人> 列中选择或输入我自己的电子邮件地址),最后单击 OK.

  8. 它返回到上一个窗口,您可以看到抄送收件人地址出现。然后点击 结束通话 按钮。

  9. 现在,它返回到最开始的对话框,单击 OK 按钮,然后将创建 cc 规则。如果您不想启用该规则,请取消选中它。

然后,在使用您指定的帐户向其他人发送或转发电子邮件后,您的帐户或您的特定抄送收件人将始终收到相同的消息。

看起来您需要处理应用程序类的 ItemSend 事件。每当用户通过检查器发送 Microsoft Outlook 项目时(在关闭检查器之前,但在用户单击"发送"按钮之后),或者在程序中使用 Outlook 项目的 Send 方法(如 MailItem)时,都会触发它。请注意,取消参数允许取消发送电子邮件的过程。

在 ItemSend 事件处理程序中,可以签出作为参数传递的项的 SentOnBehalfOfName 属性,并使用 MailItem 类的 Recipients 属性添加抄送收件人。收件人集合提供用于添加收件人的 Add 方法。

 Set myRecipient = myItem.Recipients.Add("Dan Wilson") 
 myRecipient.Type = OlMailRecipientType.olCC

之后,不要忘记调用 Recipient 类的 Resolve 或 ResolveAll 方法,以针对通讯簿解析收件人对象。

有关详细信息,请参阅如何:以编程方式填充 Outlook 中的"收件人"、"抄送"和"密件抄送"字段。

最新更新