Outlook宏根据主题行转发电子邮件

时间:2015-05-27 15:43:52

标签: vba email outlook outlook-vba

我试图将来自我公司Outlook的电子邮件转发到我们公司以外的电子邮件帐户(我已经得到了这样做)。我想转发任何包含" Excel Friday"在主题行中的另一个电子邮件地址。这是我到目前为止所做的,但它不起作用。任何帮助将不胜感激。

Private WithEvents Items As Outlook.Items
Private Sub Application_Startup()
  Dim olApp As Outlook.Application
  Dim objNS As Outlook.NameSpace
  Set olApp = Outlook.Application
  Set objNS = olApp.GetNamespace("MAPI")
  ' default local Inbox
  Set Items = objNS.GetDefaultFolder(olFolderInbox).Items
End Sub

Private Sub Items_ItemAdd(ByVal Item As Object)
On Error GoTo ErrorHandler
Dim Msg As Outlook.MailItem
If TypeName(Item) = "MailItem" Then
Set Msg = Item
  If Msg.Subject = "Excel Friday" Then
    Dim myMail As Outlook.MailItem
    Set myMail = Msg.Reply
    myMail.To = "xxxxxx@fakemail.com"
    myMail.Display
  End If
End If
ProgramExit:
Exit Sub
ErrorHandler:
MsgBox Err.Number & " - " & Err.Description
Resume ProgramExit
End Sub

2 个答案:

答案 0 :(得分:1)

  

我想转发任何包含" Excel Friday"在主题行中的另一个电子邮件地址。

但是在代码中,您检查主题行的完全匹配:

If Msg.Subject = "Excel Friday" Then

相反,您需要查找子字符串。要在字符串中查找子字符串的位置,请使用 Instr 函数。

If Instr(Msg.Subject, "Excel Friday") Then

另外我注意到你使用了Reply方法:

Set myMail = Msg.Reply 

请改用Forward方法:

Set myMail = Msg.Forward

然后使用Send方法。

 myMail.Recipients.Add "Eugene Astafiev" 

 myMail.Send 

请注意,代码基于ItemAdd事件处理程序。当大量项目一次添加到文件夹(超过16)时,不会触发此事件。

答案 1 :(得分:0)

您可以使用“运行脚本”规则

执行此操作
Sub ChangeSubjectForward(Item As Outlook.MailItem)
    Item.Subject = "Test"
 Item.Save

Set olForward = Item.Forward
olForward.Recipients.Add "Jasonfish11@domain.com"

olForward.Send

End Sub

如果是vba,您可以随时在文件夹中的所有邮件上运行。

粘贴到ThisOutlookSession并运行

Sub ChangeSubjectThenSend()
Dim olApp As Outlook.Application
Dim aItem As Object

Set olApp = CreateObject("Outlook.Application")
Set mail = olApp.ActiveExplorer.CurrentFolder

For Each aItem In mail.Items
      aItem.Subject = "New Subject"
    aItem.Save

    Set olForward = aItem.Forward
    olForward.Recipients.Add "Jasonfish11@domain.com"
    olForward.Send

Next aItem
End Sub

source Link