【问题标题】:Email temporary file with Outlook使用 Outlook 发送电子邮件临时文件
【发布时间】:2012-04-20 18:31:36
【问题描述】:

我想创建一个文件,将其作为附件通过电子邮件发送,然后使用 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 版本。它应该适用于任何版本。

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

如果您有任何问题,尽管问。

【问题讨论】:

  • 你可以在临时文件夹中创建它并标记它以在下次重新启动时将其删除等吗?
  • @AndrewFinnell:我可能可以,但是越早删除文件越好。
  • 如果您出于安全考虑需要快速摆脱它,Outlook 可能不是一个好的选择。 Outlook 在发送前将文件的副本存储在临时目录中,然后在发送后将其存储在用户 PST 文件中。
  • 据我所知,当您调用 Add 时,Outlook 应该将文件复制到其临时 OLK 目录中。您可以通过在调用 Add 后查看 User\AppData\Local\Microsoft\Windows\Temporary Internet files\OLK* 目录来验证这一点
  • 换一种想法,您始终可以通过在名称中添加时间戳来避免文件名冲突。

标签: javascript email outlook wsh jscript


【解决方案1】:

我尝试了以下代码,它成功了。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-16
    • 1970-01-01
    • 1970-01-01
    • 2010-09-25
    • 2018-08-20
    • 2012-04-16
    • 2017-06-11
    • 2011-09-28
    相关资源
    最近更新 更多