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

Always CC when sending "On Behalf Of"

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

我不熟悉 Outlook 的 VBA,但我认为您可以编写一个 if 语句来表示 "if sending message from UserX, cc UserX"。每当代表发送电子邮件时,代码应该 运行 自动。

这将满足您的需求(这是“始终抄送自己 Outlook”的第一个 Google 结果) http://www.extendoffice.com/documents/outlook/1108-outlook-auto-cc.html

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

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

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

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

    (1.)第一步,勾选指定账号框。在第 2 步中,请单击“指定”一词。 (2.) 然后单击帐户下拉列表以选择要应用此规则的帐户。

  5. select修改账号后,点击确定return到之前的window,你会看到select修改的账号显示在规则向导中。然后点击下一步按钮。

  6. (1.) 在此向导中,选中将消息抄送给其他人或 public 组框,然后在步骤 2 中单击人员或 public 组。
    (2.) 在 Rule Address 对话框中,双击您的抄送收件人,将地址添加到 To-> 文本框,(如果我想自己抄送,我会 select 或输入我自己的电子邮件地址To-> 列。),最后单击确定。

  7. 它returns到前面的window,可以看到抄送收件人地址出现了。然后点击完成按钮。

  8. 现在,return进入最开始的对话框,单击“确定”按钮,然后将创建 cc 规则。如果您不想启用该规则,请取消选中它。

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

您似乎需要处理应用程序 class 的 ItemSend 事件。每当发送 Microsoft Outlook 项目时都会触发它,无论是用户通过检查器(在检查器关闭之前,但在用户单击“发送”按钮之后),还是在使用 Outlook 项目(例如 MailItem)的发送方法时在一个程序中。请注意,Cancel 参数允许取消发送电子邮件的过程。

在 ItemSend 事件处理程序中,您可以查看 SentOnBehalfOfName property of the item passed as a parameter and add the CC recipient using the Recipients property of the MailItem class. The Recipients collection provides the Add 添加收件人的方法。

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

之后不要忘记调用 Recipient class 的 Resolve 或 ResolveAll 方法来根据地址簿解析 Recipient 对象。

有关详细信息,请参阅 How To: Fill TO,CC and BCC fields in Outlook programmatically

SentOnBehalfOfName 很棘手。在物品发送之前它通常是空的。

使用 ThisOutlookSession 中的这段代码,您应该会发现它是空白的。

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。

Edit2:从 itemsend

移动 cc 代码
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