Javascript:打开Outlook并向新电子邮件添加附件

时间:2016-02-05 16:42:57

标签: javascript email outlook

我正在尝试在Outlook中为新电子邮件添加附件。

如下所示(取自here):

function sendEmail(){
  try{
    var theApp = new ActiveXObject("Outlook.Application");
    var objNS = theApp.GetNameSpace('MAPI');
    var theMailItem = theApp.CreateItem(0); // value 0 = MailItem
    theMailItem.to = ('test@gmail.com');
    theMailItem.Subject = ('test');
    theMailItem.Body = ('test');
    //theMailItem.Attachments.Add("C\\file.txt");
    theMailItem.display();
   }
    catch (err) {
       alert(err.message);
    } 
}

它正在工作(在Outlook中打开新的电子邮件窗口并预填充上述数据),但仅当应该添加附件的行被注释掉时。

如果是未注释的异常,则抛出“无法找到文件”,但文件存在。它可以作为附件在Outlook中手动添加。

看起来Outlook试图找到文件,但由于某种原因不能。 我尝试使用正斜杠,反斜杠和双反斜杠 - 没有运气。

在Windows 7和8中测试,结果相同。 它只需要从IE工作。

也许有人可以为上面的代码提供修复程序,或者有一段代码可以为Outlook添加附件?

或者可能知道某些需要更改的IE或Outlook设置?

非常感谢,无论如何。

2 个答案:

答案 0 :(得分:1)

实际上我的路径错误,所以下面的代码完全正常工作,可以使用。它在Windows 8和IE 11上进行了测试。

当然它只能在IE中运行,并打开弹出窗口询问有关运行ActiveX的权限。

   function sendEmail(){
       try{
          var theApp = new ActiveXObject("Outlook.Application");
          var objNS = theApp.GetNameSpace('MAPI');
          var theMailItem = theApp.CreateItem(0); // value 0 = MailItem
          theMailItem.to = ('test@gmail.com');
          theMailItem.Subject = ('test');
          theMailItem.Body = ('test');
          theMailItem.Attachments.Add("C\\file.txt");
          theMailItem.display();
      }
      catch (err) {
         alert(err.message);
      } 
   }

答案 1 :(得分:0)

       try{
          var theApp = new ActiveXObject("Outlook.Application");
          var objNS = theApp.GetNameSpace('MAPI');
          var theMailItem = theApp.CreateItem(0); // value 0 = MailItem
          theMailItem.to = ('test@gmail.com');
          theMailItem.Subject = ('test');
          theMailItem.Body = ('test');
          theMailItem.Attachments.Add("C:\\file.txt");
          theMailItem.display();
      }
      catch (err) {
         alert(err.message);
      } 
   }

semi colon is missing in the path