2012-04-20 10 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, нет возможности подписаться на события ActiveXObject в JScript.

Мои мысли:

  • я мог удалить файл немедленно, если Attachments.Add является синхронным (или если Display ожидает, пока все вложения не были прочитаны)
  • Я мог спать в течение х секунд, а затем удалите файл.
  • Возможно, есть способ подписаться на мероприятие, и я его не нашел.

Детали:

Этот сценарий, для всех намерений и целей, работающих в WScript.

Это не относится к какой-либо версии Outlook. Он должен работать с любой версией.

Я также прикреплю несколько других файлов к письму.

Если у вас есть вопросы, просто спросите.

+0

Можете ли вы создать его в папке temp и пометить его для последующей перезагрузки и т. Д.? –

+0

@AndrewFinnell: Я, вероятно, мог бы, но чем раньше файл будет удален, тем лучше. –

+0

Если вам нужно быстро избавиться от него из-за проблем с безопасностью Outlook, вероятно, это не очень хороший выбор. Outlook сохраняет копию файла во временном каталоге перед отправкой, а затем в файл PST пользователей после отправки. –

ответ

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() кажется синхронными.

Смежные вопросы