我有一个宏设置,会自动向几十位经理发送电子邮件。有时他们会离开,我必须检查离开的消息并手动将其转发给覆盖他们的人。
在寻求帮助之前,我试图寻找解决方案,所以请怜悯我吧!我找到了a similar question,但它没有太多帮助,我无法找到很多关于从草稿中收件人中提取自动回复的信息。
到目前为止,这就是我所拥有的:
Sub CheckAutoReply()
Dim OL As Outlook.Application
Dim EM As Outlook.MailItem
Dim R As Outlook.Recipient
Set OL = New Outlook.Application
Set EM = CreateItem(olMailItem)
With EM
.display
.To = "John.Doe@Stackoverflow.com" 'This is a recipient I know has an autoresponse. Fictitious of course.
End With
Set R = EM.Recipients(1) 'on hover it pops up with "EM.Recipients(1) = "John.Doe@Stackoverflow.com""
Debug.Print R.Name 'this returns "John.Doe@Stackoverflow.com"
Debug.Print R.AutoResponse 'this returns nothing
Set OL = Nothing
Set EM = Nothing
End Sub
答案 0 :(得分:1)
这不是一个正确的答案,而是试图让你开始。
您的代码表明您对Outlook VBA的了解有限。如果这是真的,我怀疑“类似问题”中的任何方法都是合适的。您熟悉Visual Studio,C ++,Delphi还是Redemption?即使您设法访问PR_OOF_STATE,也不会有其他电子邮件地址。
我首先尝试从外出回复中提取电子邮件地址。寻找“@”并将文本提取回并转发到下一个空格可能就足够了。
将以下代码复制到Outlook VBA模块。选择一个外出回复并运行宏DemoExplorer。这个宏的目的是向您展示电子邮件的文本和Html正文。在其他回复中尝试此宏。身体是否一致?你能看到如何提取备用电子邮件地址吗?
Public Sub DemoExplorer()
Dim Exp As Outlook.Explorer
Dim ItemCrnt As MailItem
Dim NumSelected As Long
Set Exp = Outlook.Application.ActiveExplorer
NumSelected = Exp.Selection.Count
If NumSelected = 0 Then
Debug.Print "No emails selected"
Else
For Each ItemCrnt In Exp.Selection
With ItemCrnt
Debug.Print "From " & .SenderName & " Subject " & .Subject
Debug.Print "Text " & Replace(Replace(Replace(.Body, vbLf, "{lf}"), vbCr, "{cr}"), vbTab, "{tb}")
Debug.Print "Html " & Replace(Replace(Replace(.HTMLBody, vbLf, "{lf}"), vbCr, "{cr}"), vbTab, "{tb}")
End With
Next
End If
End Sub
答案 1 :(得分:1)
您找到的类似问题(Remove recipients from Outlook email if automatic reply is activated)的答案仍然有效。你有什么问题?
唯一的另一种可能性(这是Outlook在为您要发送的收件人显示OOF横幅时使用的)是使用EWS和GetMailTips操作(请参阅https://msdn.microsoft.com/en-us/library/office/dd877060(v=exchg.150).aspx)。