使用 Outlook 通过电子邮件发送临时文件

Email temporary file with Outlook

本文关键字:临时文件 电子邮件 Outlook 使用      更新时间:2023-09-26

我想创建一个文件,将其作为附件通过电子邮件发送,然后使用 JScript 删除该文件。

问题在于过早删除文件会阻止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 是同步的(或者如果 Display 等到所有附件都被读取),我可以立即删除该文件
  • 我可以睡 x 秒钟,然后删除文件。
  • 也许有一种方法可以订阅事件,但我还没有找到。

详:

出于所有意图和目的,此脚本都在 wscript 中运行。

这并非特定于任何 Outlook 版本。它应该适用于任何版本。

我还将在电子邮件中附加其他几个文件。

如果您有任何疑问,请直接询问。

我尝试了以下代码,它有效。

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