2012-04-20 97 views
1

我想創建一個文件,將其作爲附件通過電子郵件發送,然後使用JScript刪除文件。使用Outlook發送電子郵件臨時文件

問題在於,過早刪除文件會阻止Outlook將該文件附加到電子郵件中。

我將創建一個MailItem並使用類似下面的代碼顯示它。電子郵件不會自動發送,但會顯示,以便用戶可以根據需要進行編輯。

var outlook = new ActiveXObject("Outlook.Application"); 
var msg = outlook.CreateItem(0); 
msg.Recipients.Add(toAddress); 
msg.Subject = subject; 
msg.htmlbody = body; 
msg.Attachments.Add(attachment); 
msg.Display(); 

我的問題是,何時可以安全刪除附件?我知道MailItem有事件,我可能會刪除AttachmentAdd事件中的附件。但是,AFAIK,無法在JScript中訂閱ActiveXObject事件。

我的想法:

  • 我可以立即刪除該文件,如果Attachments.Add是同步的(或者,如果顯示等待,直到所有附件都被讀取)
  • 我能睡x秒,然後刪除該文件。
  • 也許有一種方法來訂閱一個事件,我還沒有找到它。

詳情:

這個腳本是,對於所有意圖和目的,在WScript的運行。

這不是特定於任何Outlook版本。它應該適用於任何版本。

我也將其他幾個文件附加到電子郵件。

如果您有任何疑問,只需詢問。

+0

您可以在臨時文件夾中創建它,並將其標記爲在下次重新啓動時被刪除等? – 2012-04-20 18:48:33

+0

@AndrewFinnell:我可能會,但是越早刪除文件越好。 – 2012-04-20 18:49:44

+0

由於安全問題,如果您需要快速擺脫它,Outlook可能不是一個好選擇。 Outlook在發送之前將文件的副本存儲在臨時目錄中,然後在發送之後存儲在用戶PST文件中。 – 2012-04-20 18:52:34

回答

0

我試過下面的代碼,它的工作。

var fso = new ActiveXObject("Scripting.FileSystemObject"); 

var outlook = new ActiveXObject("Outlook.Application"); 
var msg = outlook.CreateItem(0); 
msg.Subject = "Subject"; 
msg.Body = "Body"; 
msg.Attachments.Add(file); 
fso.DeleteFile(file); // No problems. 
msg.Display(); 

在文檔中沒有提到它,但Attachments.Add()似乎是同步的。

相關問題