2012-04-20 99 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()似乎是同步的。

相关问题