发送“代表”时始终为CC

时间:2015-01-14 22:06:01

标签: vba outlook outlook-vba send-on-behalf-of

我经常代表其他用户发送电子邮件。我希望每次从该用户/代表该用户发送电子邮件时,使用VBA自动CC该用户。

我不熟悉VBA for Outlook,但我想你可以写一个if语句,说“如果从UserX发送消息,cc用户X”。代码应该在代表发送电子邮件时自动运行。

3 个答案:

答案 0 :(得分:1)

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

编辑:刚刚意识到你可以在创建/回复时设置cc,而不是等到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

答案 1 :(得分:0)

这将是你想要的(这是第一个谷歌的结果"总是CC自己的Outlook") http://www.extendoffice.com/documents/outlook/1108-outlook-auto-cc.html

  1. 启动您的Outlook 2013或2010,并确保您在邮件部分。然后点击主页>规则>管理规则&警报。
  2. 选择管理规则&警报选项,将弹出规则和警报对话框。在“电子邮件规则”下,单击“新建规则”选项。
  3. 在“规则向导”中,单击“对我发送的邮件应用规则”,然后单击“下一步”继续。
  4. 然后弹出另一个对话框。

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

  5. 选择帐户后,单击“确定”返回上一个窗口,您将看到“规则向导”中显示的所选帐户。然后单击“下一步”按钮。
  6. (1。)在此向导中,选中“将消息发送给人员或公共组”框,然后在步骤2中单击人员或公共组。
    (2.)在“规则地址”对话框中,双击cc收件人,将地址添加到“收件人”按钮;文本框,(如果我想抄送自己,我会在To->列中选择或输入我自己的电子邮件地址。),最后点击确定。

  7. 返回上一个窗口,您可以看到cc收件人地址出现。然后单击完成按钮。
  8. 现在,它返回到最开始的对话框,单击“确定”按钮,然后将创建cc规则。如果您不想启用该规则,请取消选中它。
  9. 然后,在使用您指定的帐户向其他人发送或转发电子邮件后,您的帐户或您的特定cc收件人将始终收到相同的邮件。

答案 2 :(得分:0)

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

在ItemSend事件处理程序中,您可以查看作为参数传递的项目的SentOnBehalfOfName属性,并使用MailItem类的Recipients属性添加CC收件人。 “收件人”集合提供了用于添加收件人的Add方法。

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

不要忘记调用Recipient类的Resolve或ResolveAll方法来解析地址簿中的Recipient对象。

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