代码之家  ›  专栏  ›  技术社区  ›  Bravax

在Javascript中创建带有附件的电子邮件时出现问题

  •  3
  • Bravax  · 技术社区  · 16 年前

    我正在启动一个电子邮件创建,通过调用下面的代码,并添加一个附件。

    为什么第二次调用该方法时会得到RangeError?

    function NewMailItem(p_recipient, p_subject, p_body, p_file, p_attachmentname)
    {
       try 
       {
         var objO = new ActiveXObject('Outlook.Application');
         var objNS = objO.GetNameSpace('MAPI');
         var mItm = objO.CreateItem(0);
         mItm.Display();
         if (p_recipient.length > 0) 
         {
           mItm.To = p_recipient;
         }
         mItm.Subject = p_subject;
         if (p_file.length > 0) 
         {
          var mAts = mItm.Attachments;
          mAts.add(p_file, 1, p_body.length + 1, p_attachmentname);
         }
         mItm.Body = p_body;
         mItm.GetInspector.WindowState = 2;
       } catch(e) 
       { 
         alert('unable to create new mail item'); 
       } 
    }
    

    mAts.add行发生错误。所以当它试图附加文档时,失败了。

    3 回复  |  直到 16 年前
        1
  •  3
  •   Pranav Pranav    16 年前

    无法在IE之外工作,用户需要在计算机上配置Outlook和帐户。你确定要用这种方式发送电子邮件吗?

        2
  •  1
  •   Tomalak    16 年前

    我试着用这个小片段,它工作得很完美:

    var objO = new ActiveXObject('Outlook.Application');
    var mItm = objO.CreateItem(0);
    
    var mAts   = mItm.Attachments;
    var p_file = [
      "http://stackoverflow.com/content/img/vote-arrow-up.png",
      "http://stackoverflow.com/content/img/vote-arrow-down.png"
    ];
    for (var i = 0; i < p_file.length; i++) {
      mAts.add(p_file[i]);
    }
    

    Attachments.Add() . 该方法默认在末尾添加附件,这似乎是您无论如何都想要的。

    你能试试这个独立的片段吗?如果它对你有用,请一步一步地将你的代码减少到这个绝对最小值,你会发现是什么导致了这个错误。

        3
  •  0
  •   mayank mayank    16 年前

    首先执行mItm.display() 然后编写mItm.GetInspector.WindowsState=2;