0

我经常代表另一个用户发送电子邮件。每次我从/代表该用户发送电子邮件时,我想使用 VBA 自动抄送该用户。

我对 Outlook 的 VBA 不熟悉,但我认为您可以编写一个 if 语句,上面写着“如果从 UserX 发送消息,则抄送 UserX”。代码应在代表发送电子邮件时自动运行。

4

3 回答 3

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

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

Edit2:从 itemend 移动 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
于 2015-01-15T20:41:03.063 回答
0

这将满足您的需求(这是“始终抄送自己的 Outlook”的第一个 Google 结果) 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.) 在规则地址对话框中,双击您的抄送收件人以添加地址到 To-> 文本框,(如果我想自己抄送,我会在 To-> 栏中选择或输入我自己的电子邮件地址。),最后单击 OK。

  7. 返回上一个窗口,您可以看到抄送收件人地址出现。然后单击完成按钮。

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

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

于 2015-01-14T22:16:52.327 回答
0

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

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

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

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

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

于 2015-01-15T13:06:25.320 回答