2016-07-06 79 views
2

我有一个宏设置,它会自动发送电子邮件给几十个经理。有时他们离开了,我必须检查离开的消息并手动将其转发给覆盖他们的人。在发送电子邮件之前,我可以检查收件人是否有自动回复吗?

我在寻求帮助之前试图找到解决方案,所以要怜悯我!我发现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 = "[email protected]" '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) = "[email protected]"" 

Debug.Print R.Name 'this returns "[email protected]" 
Debug.Print R.AutoResponse 'this returns nothing 

Set OL = Nothing 
Set EM = Nothing 

End Sub 
+1

在另一个问题的三种可能的解决方案中,您实际尝试实现哪一个?或者您可以尝试设置传入邮件的事件处理程序来处理“不在办公室”的回复。无论哪种情况,您都需要使用某种RegEx来识别额外的FWD收件人...... –

+0

我从第一个开始。在Google-Fu之后,我遇到了这个问题:http://www.dimastr.com/redemption/RDOOutOfOfficeAssistant.htm 它更符合设置的一个方面。我找不到任何有关我应该使用哪个参考的信息。 – Alex

+1

看起来你并没有在上面的方法中使用Redemption,但是如果你这样做,那么也许[Dmitry](http://stackoverflow.com/users/332059/dmitry-streblechenko)可以提供帮助。我对此并不熟悉,但看起来你应该能够根据他对上一个问题的评论来做到这一点。 –

回答

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 
+0

我可以从现有的电子邮件中获取信息,我只是试图在草稿中提供此信息时,将它提供给InputBox以提示我输入管理助理的电子邮件地址。我已经设置了通过收件箱并找到任何自动回复,然后提取管理助理的名称,如果我能够在电子邮件发送时获得它,我只想避免事后的所有工作组成。 http://i.imgur.com/w5qqkUl.png – Alex

+0

我是Outlook用户,但无法访问Exchange Server,因此无法对其进行试验。您引用的答案意味着VBA中不提供此信息,因此您必须尝试列出的其中一种替代方法。 –

相关问题