使用Firefox创建Outlook对象

时间:2010-09-04 11:14:59

标签: javascript firefox outlook activex

使用ActiveX我可以创建一个Outlook实例并启动一个新的 HTML 电子邮件。

以下是示例代码:

  

var outlookApp = new ActiveXObject(“Outlook.Application”);

     

var nameSpace = outlookApp.getNameSpace(“MAPI”);

     

mailFolder = nameSpace.getDefaultFolder(6);

     

mailItem = mailFolder.Items.add('IPM.Note.FormA');

     

mailItem.Subject =“主题测试”;

     

mailItem.To =“an@email.here”;

     

mailItem.HTMLBody =“< b> bold< / b>”;

     

mailItem.display(0);

Firefox是否有同等效力。例如XPCom?有人有样品吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

//this class emulates the one u used to use
function mailer() {
  this.display = function() {
    var url = 'mailto:'
                       + this.To
                       + '?subject=' + encodeURIComponent(this.Subject)
                       + '&body=' + encodeURIComponent(this.HTMLBody);
    window.location = url;
  }
}

//we instantiate
mailItem = new mailer();


//and then your old code: 
mailItem.Subject="a subject test";
mailItem.To = "an@email.here";
mailItem.HTMLBody = "<b>bold</b>";
mailItem.display (0);

这里正在做的是使用<a>'s mailto:类似方法:

<a href="mailto:an@email.here?subject=a+subject+test&body=%3Cb%3Ebold%3C/b%3E">email me!</a>

答案 1 :(得分:0)

如果您正在使用jQuery并希望扩展其功能以实现此目的,那么这是一个非常类似于已接受答案的替代解决方案。和其他答案一样好,但我想我会抛弃我使用的替代解决方案。到目前为止,我没有遇到跨浏览器使用的任何问题。我没有回去尝试旧版本的IE,只是使用每个浏览器的更新版本来测试它。

扩展jQuery以包含您的自定义邮件程序功能

$(function () {
    $.fn.myMailer = function () {
        this.display = function() {
            var url = 'mailto:' + this.To + 
                      '?subject=' + encodeURIComponent(this.Subject) + 
                      '&body=' + encodeURIComponent(this.HTMLBody);
            window.location = url;
            return true;
        }
    }
});

使用示例:

var myMailItem = new $.fn.myMailer();
myMailItem.To = 'yourEmail@domain.com';
myMailItem.Subject = 'Your Subject';
myMailItem.HTMLBody = 'Whatever you want your E-Mail to say';
myMailItem.display(0);

此外,如果您要添加 CC BCC 收件人,请按照上述结构将其添加到 mailto 查询字符串中好。

我还尝试在客户端计算机上的Outlook电子邮件中获取附件

$(function () {
    $.fn.myMailer = function () {
        this.display = function() {
            var url = 'mailto:' + this.To + '?content-type=' +
                       encodeURIComponent('multipart/form-data') + 
                      '&subject=' + encodeURIComponent(this.Subject) + 
                      '&body=' + encodeURIComponent(this.HTMLBody) +  
                      '&attachment=' + encodeURIComponent(this.Attachment);
            window.location = url;
            return true;
        }
    }
});

我尝试失败了。我不确定这是否可以单独使用客户端代码。我错了。如果可能的话,这也可能构成我认为的安全威胁。

我认为这里最好的选择是使用客户端脚本来调用某些服务器端代码,但是您更喜欢这样做并让服务器发送电子邮件(如果适用)。

但我需要将附件添加到Outlook电子邮件中,该电子邮件将弹出客户端计算机,因此我仍在制定如何处理为我的情况添加附件的最终细节。使用.NET我认为应该有一些方法来处理这个我只是没有时间实现服务器端处理程序来完成它。如果其他人试图使用.NET here完成同样的事情,那么就可以开始使用 Outlook 2013 MailItem 属性。