2016-02-12 41 views
1

我已經創建了一個vbs以從Outlook未讀電子郵件中檢索附件並將它們存儲到文件夾中。任務調度程序。 VBS腳本未執行

GetMail.vbs

Dim SavePath 
Dim Subject 
Dim FileExtension 
Dim k 

SavePath = "D:\IN\" 
Subject = "'Replication IN'" 

Set objOutlook = CreateObject("Outlook.Application") 
Set objNamespace = objOutlook.GetNamespace("MAPI") 
Set objFolder = objNamespace.GetDefaultFolder(6) 'Inbox 

Set colItems = objFolder.Items 
Set colFilteredItems = colItems.Restrict("[Unread]=true") 
Set colFilteredItems = colFilteredItems.Restrict("[Subject] = " & Subject) 


For k = colFilteredItems.Count to 1 step -1 
    set objMessage = colFilteredItems.Item(k) 
    intCount = objMessage.Attachments.Count 
    If intCount > 0 Then 
     For i = 1 To intCount 
       objMessage.Attachments.Item(i).SaveAsFile SavePath & _ 
        objMessage.Attachments.Item(i).FileName 
     Next 
     objMessage.Unread = False 
    End If 
Next 

現在,我已經完成這項任務,並完成一次,執行另一個程序,將處理收到的附件。爲此,我創建了一個批處理文件。

MyBatch.bat

cls 
@ECHO OFF 
ECHO. * Retrieving emails ... * 
"D:\GetMail.vbs" 
ECHO. * Importing data. Please wait ... * 
"D:\MyProgram.exe" 
CLS 
EXIT 

我已經沒有問題,執行.bat文件時,一切工作正常。但是,當這個文件被一個計劃任務執行時,腳本無法讀取電子郵件,也不會收集附件。

我檢查以下內容:

  • 的任務以管理員身份運行使用最高權限複選框
  • 運行被選中。
  • 任務的上次執行狀態爲正確。
  • 事件日誌查看器中沒有相關的錯誤。

可能是什麼原因?

+0

嘗試作爲一個動作時,Outlook下載他們通過規則嚮導上的電子郵件執行以便執行腳本。 – CoveGeek

回答

1

與任何其他Office應用程序一樣,Outlook不能在服務中使用(這就是Task Scheduler的用途)。

您可以使用擴展MAPI(僅用於C++或Delphi)或諸如Redemption(任何語言,它的RDO系列對象都可用於服務)的包裝器。

您可能還需要添加一個調用Namepace.Logon:

Set objOutlook = CreateObject("Outlook.Application") 
Set objNamespace = objOutlook.GetNamespace("MAPI") 
objNamespace.Logon 
Set objFolder = objNamespace.GetDefaultFolder(6) 'Inbox 
+0

感謝您的回覆。我會看看Extended MAPI。 – equisde