在发送电子邮件之前,我可以检查收件人是否有自动回复吗?

时间:2016-07-06 13:44:56

标签: vba outlook outlook-vba

我有一个宏设置,会自动向几十位经理发送电子邮件。有时他们会离开,我必须检查离开的消息并手动将其转发给覆盖他们的人。

在寻求帮助之前,我试图寻找解决方案,所以请怜悯我吧!我找到了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

2 个答案:

答案 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)。