Outlook VBA创建自动回复收件箱中未读邮件数
我正在尝试创建一个自动回复,在这里我可以触发一个带有规则的脚本来发送自动回复 “您好,谢谢您的邮件,您的邮件已排在队列中。您面前有XX多封电子邮件,我们将尽快回复。” XX应该是未读电子邮件的数量 我发现:Outlook VBA创建自动回复收件箱中未读邮件数,vba,email,outlook,outlook-2016,Vba,Email,Outlook,Outlook 2016,我正在尝试创建一个自动回复,在这里我可以触发一个带有规则的脚本来发送自动回复 “您好,谢谢您的邮件,您的邮件已排在队列中。您面前有XX多封电子邮件,我们将尽快回复。” XX应该是未读电子邮件的数量 我发现: Private Sub myOlItems_ItemAdd(ByVal Item As Object) End Sub Sub AutoResponse(objmsg As Outlook.MailItem) ' define my reply message Dim
Private Sub myOlItems_ItemAdd(ByVal Item As Object)
End Sub
Sub AutoResponse(objmsg As Outlook.MailItem)
' define my reply message
Dim objReply As MailItem
' let's get ourselves the inbox!
Dim inbox As MAPIFolder
Set inbox = Application.GetNamespace("MAPI"). _
GetDefaultFolder(olFolderInbox)
' Let's get this reply going!
Set objReply = objmsg.Reply
' Subject Re: their subject. Standard
objReply.Subject = "Re: " & objReply.Subject
' Body - you define this, use the variable for the unread count in inbox
objReply.Body = "Your email has been received. I currently have " & inbox.UnReadItemCount & " unread emails in my inbox and I will get yours as soon as I can"
' Send this thing!
objReply.Send
' Reset
Set objReply = Nothing
End Sub
但它似乎不起作用。
我在Outlook 2016上使用exchange邮件服务器
谢谢您需要在Outlook中手动创建一个规则,并将VBA宏子项(
AutoResponse
)分配给该规则。只有这样,您才能运行代码
作为一种可能的解决方法,您可以处理当收件箱中收到新项目时触发的应用程序事件。当新邮件到达收件箱时,在客户端规则处理发生之前,触发该事件。您可以使用EntryIDCollection数组中返回的条目ID来调用该方法并处理该项。有关更多信息,请参阅
对于具有Exchange服务器帐户(非缓存Exchange模式或缓存Exchange模式)的用户,事件将仅针对Outlook启动后到达服务器的邮件触发。Outlook启动后立即以缓存Exchange模式同步的邮件,以及Outlook以非缓存Exchange模式启动时服务器上已存在的邮件,都不会触发此事件。您的设置不正确,请尝试不带Outlook规则的流动代码,确保重新启动Outlook
嗨,尤金。谢谢你的帮助。我执行了规则,并尝试通过按照规则发送邮件来测试代码。代码没有触发。我认为这与Dim收件箱有关,因为MAPIFolder Set inbox=Application.GetNamespace(“MAPI”)_试着在调试器下运行代码,看看哪行代码失败。您的宏设置允许宏运行吗?大家好。宏设置允许一切。我在exchange邮箱上,而代码将收件箱变暗为mapi文件夹,这有什么区别吗?这是我能想到的唯一原因。只需确保在自动响应项中删除“s”,否则它将继续出错。此外,如果您自己给自己发电子邮件(就像我有时为了跟上工作而做的那样),脚本将继续无限期地回复自己。
Private WithEvents Items As Outlook.Items
Private Sub Application_Startup()
Dim olNs As Outlook.NameSpace
Dim Inbox As Outlook.MAPIFolder
Set olNs = Application.GetNamespace("MAPI")
Set Inbox = olNs.GetDefaultFolder(olFolderInbox)
Set Items = Inbox.Items
End Sub
Private Sub Items_ItemAdd(ByVal Item As Object)
If TypeOf Item Is Outlook.mailitem Then
AutoResponse Items
End If
End Sub
Private Sub AutoResponse(Item As Outlook.mailitem)
Dim Reply As Outlook.mailitem ' Reply msg
Dim Inbox As Outlook.MAPIFolder ' Inbox
Set Inbox = Application.GetNamespace("MAPI") _
.GetDefaultFolder(olFolderInbox)
' Let's get this reply going!
Set Reply = Item.Reply
' Subject Re: their subject. Standard
Reply.subject = Reply.subject
' Body - you define this, use the variable for the unread count in inbox
Reply.HTMLBody = "Your email has been received. I currently have " & _
Inbox.UnReadItemCount & _
" unread emails in my inbox and I will get yours as soon as I can"
' Send this thing!
Reply.Send
' Reset
Set Reply = Nothing
End Sub