我经常代表另一个用户发送电子邮件。每次我从/代表该用户发送电子邮件时,我想使用 VBA 自动抄送该用户。
我对 Outlook 的 VBA 不熟悉,但我认为您可以编写一个 if 语句,上面写着“如果从 UserX 发送消息,则抄送 UserX”。代码应在代表发送电子邮件时自动运行。
我经常代表另一个用户发送电子邮件。每次我从/代表该用户发送电子邮件时,我想使用 VBA 自动抄送该用户。
我对 Outlook 的 VBA 不熟悉,但我认为您可以编写一个 if 语句,上面写着“如果从 UserX 发送消息,则抄送 UserX”。代码应在代表发送电子邮件时自动运行。
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
这将满足您的需求(这是“始终抄送自己的 Outlook”的第一个 Google 结果) http://www.extendoffice.com/documents/outlook/1108-outlook-auto-cc.html
启动您的 Outlook 2013 或 2010,并确保您在邮件部分。然后单击主页 > 规则 > 管理规则和警报。
选择管理规则和警报选项后,将弹出规则和警报对话框。在电子邮件规则下,单击新建规则选项。
在规则向导中,单击对我发送的消息应用规则,然后单击下一步继续。
然后弹出另一个对话框。
(1.) 在第 1 步中,检查指定的帐户框。在第 2 步中,请点击单词 - 指定。(2.) 然后单击帐户下拉列表以选择要应用此规则的帐户。
选择帐户后,单击确定返回上一个窗口,您将看到所选帐户显示在规则向导中。然后单击下一步按钮。
(1.) 在此向导中,选中将消息抄送至人员或公共组框,然后在步骤 2 中单击人员或公共组。
(2.) 在规则地址对话框中,双击您的抄送收件人以添加地址到 To-> 文本框,(如果我想自己抄送,我会在 To-> 栏中选择或输入我自己的电子邮件地址。),最后单击 OK。
返回上一个窗口,您可以看到抄送收件人地址出现。然后单击完成按钮。
现在,它返回到最开始的对话框,单击 OK 按钮,然后将创建 cc 规则。如果您不想启用该规则,请取消选中它。
然后在使用您指定的帐户向其他人发送或转发电子邮件后,您的帐户或您的特定抄送收件人将始终收到相同的邮件。
看起来您需要处理 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 中填写收件人、抄送和密件抄送字段。