vba - 来自特定文件夹的自动转发电子邮件
问题描述
我想在 vba 中创建具有条件的自动转发电子邮件:
只有来自“sourcemail@gmail.com”的邮件并且正文中有“ABCDE”
仅来自收件箱 \ownmail@gmail.com\Inbox\Folder1 下特定文件夹的邮件
如果邮件进入“收件箱”,则条件 1 没有问题,但如果邮件进入“文件夹 1”,则条件 2 不会自动转发。
我的代码是这样的:
Public WithEvents objInbox As Outlook.Folder
Public WithEvents objInboxItems As Outlook.Items
Private Sub Application_Startup()
Set objInbox = Outlook.Application.Session.GetDefaultFolder(olFolderInbox)
Set objInboxItems = objInbox.Items
End Sub
Private Sub objInboxItems_ItemAdd(ByVal Item As Object)
Dim objMail As Outlook.MailItem
Dim objForward As Outlook.MailItem
If TypeOf Item Is MailItem Then
Set objMail = Item
'If it is a specific new email
If (objMail.SenderEmailAddress = "sourcemail@gmail.com") And InStr(Item.Body, "ABCDE") > 0 Then
Set objForward = objMail.Forward
'Customize the forward subject, body and recipients
With objForward
.Subject = "test subject"
.HTMLBody = "<HTML><BODY>test body</BODY></HTML>" & objForward.HTMLBody
.Recipients.Add ("recepient1@gmail.com")
.Recipients.Add("recepient2@gmail.com").Type = olCC
.Recipients.ResolveAll
.Importance = olImportanceHigh
.Send
End With
End If
End If
End Sub
解决方案
我相信您只检查直接进入收件箱的邮件。要检查进入Folder1的邮件是否被转发,我认为您必须执行与收件箱类似的操作,例如以下代码:
' Inbox: Folder1
Public WithEvents InboxFolder1 As Outlook.Items
' Put this line in Sub Application_Startup. Correct the path if it's not this.
Set InboxFolder1 = objInbox.Folders.Item("ownmail@gmail.com").Folders.Item("Inbox").Folders.Item("Folder1").Items
' Create this procedure
Private Sub InboxFolder1_ItemAdd(ByVal Item As Object)
' Put your code in here
Debug.Print Item.Subject
End Sub
推荐阅读
- azure - Microsoft 对等互连 -- EXPRESSROUTE
- c# - 如何检查输入日期是否有效
- python - Pyspark - 用 pysaprk 中的第一个单词替换 2 个或更多连续单词
- javascript - 所有正文内容在导航上下移动(HTML & CSS)
- batch-file - 将 curl 命令输出存储在批处理脚本的变量中
- html - Asp.NET MVC 表单条目显示为外部站点的链接?
- javascript - 通过 d3.js 显示从 div html 获取的变量值
- typescript - “ITestData”可分配给“IEntityData”类型的约束,但“IEntityData”可以用不同的约束子类型实例化
- c# - 如何对以下场景进行单元测试?
- python - 如何防止通过单击 PYQT 中的滑块来更改滑块的值?