2016-07-06 80 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中不提供此信息,因此您必須嘗試列出的其中一種替代方法。 –

相關問題