如何从JavaScript发送电子邮件


243

我希望我的网站能够发送电子邮件而不刷新页面。所以我想使用Javascript。

<form action="javascript:sendMail();" name="pmForm" id="pmForm" method="post">
Enter Friend's Email:
<input name="pmSubject" id="pmSubject" type="text" maxlength="64" style="width:98%;" />
<input name="pmSubmit" type="submit" value="Invite" />

这是我要调用的函数的方式,但是我不确定要在javascript函数中放入什么。通过研究,我发现了一个使用mailto方法的示例,但我的理解是实际上并没有直接从站点发送邮件。

所以我的问题是,我在哪里可以找到要放在JavaScript函数中的内容,以便直接从网站发送电子邮件。

function sendMail() {
    /* ...code here...    */
}

7
使用服务器端语言实际发送电子邮件,使用AJAX获得所需的外观。
暗影巫师为您耳边

1
这可能是有点晚了,但是这可能会帮助您:stackoverflow.com/questions/271171/...
PatrickMelia

2
Gmail用户可以使用它,请参阅developers.google.com/gmail/api
Densi Tensy,

如下所述,您可能还想看看EmailJS,它允许直接使用预编译的模板从Javascript发送电子邮件,并且还支持动态参数,附件,验证码,REST API等。我们还提供免费套餐以开始使用[信息披露-我是创作者之一]
Sasha

请注意,如果您使用接受的答案,则电子邮件将来自用户的帐户。要从您的个人或企业帐户发送电子邮件,正确的方法是使用javascript通过您自己的服务器或第三方服务(例如Byteline)发送电子邮件。下面的答案中有更多详细信息。
dsbajna

Answers:


311

您不能直接使用javascript发送电子邮件。

但是,您可以打开用户的邮件客户端:

window.open('mailto:test@example.com');

还有一些参数可以预填充主题和身体:

window.open('mailto:test@example.com?subject=subject&body=body');

另一种解决方案是对服务器进行ajax调用,以便服务器发送电子邮件。注意不要让任何人通过您的服务器发送任何电子邮件。


3
如果打开页面的程序已经具有电子邮件客户端功能..(例如Opera 12.50),则它将作为常规URL打开链接。他们也是具有firefox gecko引擎的Thunderbird:它可以将电子邮件中的超链接作为新选项卡打开网页。
user2284570 2013年

11
仅需注意,您还可以使用window.location.href(例如在此答案中:stackoverflow.com/questions/271171/…)打开电子邮件客户端,并且当用户使用完电子邮件后,它不会留下空白的窗口。
igneosaur 2014年

1
subjectbody变量,还是它们是字段中的实际文本?
爱德华·卡拉克

3
该答案的确回答不了问题,但是@rahulroy的答案很好
Medet Tleukabiluly 2015年

3
我会走一步,做window.open( String( 'mailto:recipient^example.com' ).replace('^', '@') );混淆防垃圾邮件程序
帕维尔·列别杰夫

94

通过服务器间接-调用第三方API-安全且推荐


您的服务器可以在经过正确的身份验证和授权后调用第三方API。API密钥不公开给客户端。

node.js - https: //www.npmjs.org/package/node-mandrill

var mandrill = require('node-mandrill')('<your API Key>'); 

function sendEmail ( _name, _email, _subject, _message) {
    mandrill('/messages/send', {
        message: {
            to: [{email: _email , name: _name}],
            from_email: 'noreply@yourdomain.com',
            subject: _subject,
            text: _message
        }
    }, function(error, response){
        if (error) console.log( error );
        else console.log(response);
    });
}

// define your own email api which points to your server.

app.post( '/api/sendemail/', function(req, res){

    var _name = req.body.name;
    var _email = req.body.email;
    var _subject = req.body.subject;
    var _messsage = req.body.message;

    //implement your spam protection or checks. 

    sendEmail ( _name, _email, _subject, _message );

});

然后在客户端上使用$ .ajax来调用您的电子邮件API。


直接从客户端-调用第三方API-不推荐


仅使用JavaScript发送电子邮件

in short: 
1. register for Mandrill to get an API key
2. load jQuery
3. use $.ajax to send an email

像这样 -

function sendMail() {
    $.ajax({
      type: 'POST',
      url: 'https://mandrillapp.com/api/1.0/messages/send.json',
      data: {
        'key': 'YOUR API KEY HERE',
        'message': {
          'from_email': 'YOUR@EMAIL.HERE',
          'to': [
              {
                'email': 'RECIPIENT@EMAIL.HERE',
                'name': 'RECIPIENT NAME (OPTIONAL)',
                'type': 'to'
              }
            ],
          'autotext': 'true',
          'subject': 'YOUR SUBJECT HERE!',
          'html': 'YOUR EMAIL CONTENT HERE! YOU CAN USE HTML!'
        }
      }
     }).done(function(response) {
       console.log(response); // if you're into that sorta thing
     });
}

https://medium.com/design-startups/b53319616782

注意:请记住,任何人都可以看到您的API密钥,因此任何恶意用户都可以使用您的密钥来发送电子邮件,从而耗尽您的配额。


8
即使文章确实说了这一点,我也应该在这里说,即使这行得通,但也存在一些安全问题,因为您也需要将api密钥发送给客户端。这可能会被滥用。
cantdutchthis 2014年

35

我找不到真正满足原始问题的答案。

  • 由于Mandrill是新的定价政策,因此不理想。此外,如果您想确保凭据安全,则需要后端服务。
  • 通常最好隐藏电子邮件,这样您就不会出现在任何列表上(mailto解决方案暴露了这个问题,并且对于大多数用户而言并不方便)。
  • 设置sendMail或仅要求发送电子邮件就完全需要后端。

我整理了一个简单的免费服务,使您可以发出标准的HTTP POST请求以发送电子邮件。它称为PostMail,您可以简单地发布表单,使用Javascript或jQuery。注册后,它会为您提供可复制并粘贴到您的网站中的代码。这里有些例子:

Javascript:

<form id="javascript_form">
    <input type="text" name="subject" placeholder="Subject" />
    <textarea name="text" placeholder="Message"></textarea>
    <input type="submit" id="js_send" value="Send" />
</form>

<script>

    //update this with your js_form selector
    var form_id_js = "javascript_form";

    var data_js = {
        "access_token": "{your access token}" // sent after you sign up
    };

    function js_onSuccess() {
        // remove this to avoid redirect
        window.location = window.location.pathname + "?message=Email+Successfully+Sent%21&isError=0";
    }

    function js_onError(error) {
        // remove this to avoid redirect
        window.location = window.location.pathname + "?message=Email+could+not+be+sent.&isError=1";
    }

    var sendButton = document.getElementById("js_send");

    function js_send() {
        sendButton.value='Sending…';
        sendButton.disabled=true;
        var request = new XMLHttpRequest();
        request.onreadystatechange = function() {
            if (request.readyState == 4 && request.status == 200) {
                js_onSuccess();
            } else
            if(request.readyState == 4) {
                js_onError(request.response);
            }
        };

        var subject = document.querySelector("#" + form_id_js + " [name='subject']").value;
        var message = document.querySelector("#" + form_id_js + " [name='text']").value;
        data_js['subject'] = subject;
        data_js['text'] = message;
        var params = toParams(data_js);

        request.open("POST", "https://postmail.invotes.com/send", true);
        request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

        request.send(params);

        return false;
    }

    sendButton.onclick = js_send;

    function toParams(data_js) {
        var form_data = [];
        for ( var key in data_js ) {
            form_data.push(encodeURIComponent(key) + "=" + encodeURIComponent(data_js[key]));
        }

        return form_data.join("&");
    }

    var js_form = document.getElementById(form_id_js);
    js_form.addEventListener("submit", function (e) {
        e.preventDefault();
    });
</script>

jQuery的:

<form id="jquery_form">
    <input type="text" name="subject" placeholder="Subject" />
    <textarea name="text" placeholder="Message" ></textarea>
    <input type="submit" name="send" value="Send" />
</form>

<script>

    //update this with your $form selector
    var form_id = "jquery_form";

    var data = {
        "access_token": "{your access token}" // sent after you sign up
    };

    function onSuccess() {
        // remove this to avoid redirect
        window.location = window.location.pathname + "?message=Email+Successfully+Sent%21&isError=0";
    }

    function onError(error) {
        // remove this to avoid redirect
        window.location = window.location.pathname + "?message=Email+could+not+be+sent.&isError=1";
    }

    var sendButton = $("#" + form_id + " [name='send']");

    function send() {
        sendButton.val('Sending…');
        sendButton.prop('disabled',true);

        var subject = $("#" + form_id + " [name='subject']").val();
        var message = $("#" + form_id + " [name='text']").val();
        data['subject'] = subject;
        data['text'] = message;

        $.post('https://postmail.invotes.com/send',
            data,
            onSuccess
        ).fail(onError);

        return false;
    }

    sendButton.on('click', send);

    var $form = $("#" + form_id);
    $form.submit(function( event ) {
        event.preventDefault();
    });
</script>

同样,在完全公开的情况下,我创建了此服务,因为找不到合适的答案。


我一直在寻找这种解决方案,感谢您的回答,但我想知道如何在html表单中添加一个文本框,因为每当我尝试更改代码以为其他信息添加一个文本框时,代码就会停止加工。您知道对此有什么解决方案吗?
苏曼

Gmail用户实际上可以做您想做的事情-请参阅developers.google.com/gmail/api,因此也许其他一些电子邮件供应商也有其Javascript API
Densi Tensy

1
这是最好的解决方案。非常感谢你。山魈有没有免费的计划了,并mailgun不支持CORS,因此JavaScript的
stallingOne

3
这和其他人有同样的问题吗?访问令牌(API密钥)已公开
Greg Ennis,

1
他们每天最多只能发送25封电子邮件。
Archi'3

26

您可以在这篇文章中找到放入JavaScript函数的内容。

function getAjax() {
    try {
        if (window.XMLHttpRequest) {
            return new XMLHttpRequest();
        } else if (window.ActiveXObject) {
            try {
                return new ActiveXObject('Msxml2.XMLHTTP');
            } catch (try_again) {
                return new ActiveXObject('Microsoft.XMLHTTP');
            }
        }
    } catch (fail) {
        return null;
    }
}

function sendMail(to, subject) {
     var rq = getAjax();

     if (rq) {
         // Success; attempt to use an Ajax request to a PHP script to send the e-mail
         try {
             rq.open('GET', 'sendmail.php?to=' + encodeURIComponent(to) + '&subject=' + encodeURIComponent(subject) + '&d=' + new Date().getTime().toString(), true);

             rq.onreadystatechange = function () {
                 if (this.readyState === 4) {
                     if (this.status >= 400) {
                         // The request failed; fall back to e-mail client
                         window.open('mailto:' + to + '?subject=' + encodeURIComponent(subject));
                     }
                 }
             };

             rq.send(null);
         } catch (fail) {
             // Failed to open the request; fall back to e-mail client
             window.open('mailto:' + to + '?subject=' + encodeURIComponent(subject));
         }
     } else {
         // Failed to create the request; fall back to e-mail client
         window.open('mailto:' + to + '?subject=' + encodeURIComponent(subject));
     }
}

提供您自己的PHP(或任何语言)脚本来发送电子邮件。


18

我正在向你新闻。您本身无法使用JavaScript发送电子邮件。


基于OP的问题,@ KennyEvitt在评论中指出的上述答案不再成立。看起来您可以将JavaScript用作SMTP客户端

但是,我还没有更深入地研究它是否足够安全和​​跨浏览器兼容。因此,我既不鼓励也不劝阻您使用它。使用风险自负。


1
可以用Ajax甚至隐藏的iframe来完成...您永远都不知道
Zebra

1
@danialentzri:JavaScript永远不会成为邮件中继,这就是我所说的“本质”
Shef 2011年

哎呀!我有一台小显示器告诉您真相,它不支持滚动条。
斑马

我快速浏览了一下@KennyEvitt,看来您仍然需要邮件中继。这基本上就是我在回答中所说的。
Shef

@Shef快速浏览一下您看到了什么?除了其他电子邮件客户端要求之外,我找不到其他要求。还是您声称自己例如Microsoft Outlook也无法发送电子邮件?从技术上讲这是正确的,但在任何意义上我都不希望其他人理解。
肯尼·埃维特

16

我知道我现在还没来得及写这个问题的答案,但是我认为这将对任何想通过javascript发送电子邮件的人有用。

我建议的第一种方法是使用回调在服务器上执行此操作。如果您真的希望使用javascript进行处理,那么我建议您这样做。

我发现最简单的方法是使用smtpJs。一个免费的库,可用于发送电子邮件。

1.包括如下脚本

<script src="https://smtpjs.com/v3/smtp.js"></script>

2.您可以发送这样的电子邮件

Email.send({
    Host : "smtp.yourisp.com",
    Username : "username",
    Password : "password",
    To : 'them@website.com',
    From : "you@isp.com",
    Subject : "This is the subject",
    Body : "And this is the body"
    }).then(
      message => alert(message)
    );

不建议这样做,因为它将在客户端显示您的密码。因此,您可以执行以下操作来加密SMTP凭据,并将其锁定到单个域,然后传递安全令牌代替凭据。

Email.send({
    SecureToken : "C973D7AD-F097-4B95-91F4-40ABC5567812",
    To : 'them@website.com',
    From : "you@isp.com",
    Subject : "This is the subject",
    Body : "And this is the body"
}).then(
  message => alert(message)
);

最后,如果您没有SMTP服务器,请使用smtp中继服务,例如Elastic Email

另外,这里还有指向SmtpJS.com官方网站的链接,您可以在其中找到所需的所有示例以及可以创建安全令牌的位置。

我希望有人觉得这个细节有用。快乐的编码。


3
这仍然使第三方可以完全访问您的SMTP服务器,以便他们可以为您中继邮件以换取……什么?
Quentin

SecureToken仅对在创建时指定的域有效,因此从另一个域调用js将不起作用。
smoore4

8

似乎已经有了新的解决方案。它称为EmailJS。他们声称不需要服务器代码。您可以请求邀请。

2016年8月更新:EmailJS似乎已经上线了。您每月最多可以免费发送200封电子邮件,并且它还提供大量订阅。


这有点不好意思,非常漂亮的UI,但是塞满了所有文档示例或帮助。避免。
Skarsnik'3

我尝试了emailJS,但它只发送到我的电子邮件。如何发送给其他电子邮件?
Maged Saeed

这已经很晚了,但是在电子邮件模板部分使用@MagedSaeed,在编辑模板时,您可以指定“收件人”电子邮件。您甚至可以使用其模板选项使“ To”字段动态化。他们的文档在详细说明方面做得很好。
abagh0703

6

window.open('mailto:test@example.com'); 如上所述,没有任何动作可以防止“ test@example.com”电子邮件地址被垃圾邮件发送者窃取。我曾经经常遇到这个问题。

var recipient="test";
var at = String.fromCharCode(64);
var dotcom="example.com";
var mail="mailto:";
window.open(mail+recipient+at+dotcom);

4

Javascript是客户端,您不能使用Javascript发送电子邮件。浏览器可能仅识别mailto:并启动您的默认邮件客户端。


那会解释为什么我找不到关于它的任何信息。谢谢!!
user906357 2011年

同样的事情……将来可能允许原始连接到端口的API即将到来
2013年

这是最准确的答案!使声音听起来可行的所有其他答案,都在某处使用了后端。OP仅表示Javascript。意思是,即使是SAAS后端,也请不要使用后端。好答案。
丹·蔡斯

4

在您的sendMail()函数中,将ajax调用添加到您的后端,您可以在其中在服务器端实现此功能。


4

function send() {
  setTimeout(function() {
    window.open("mailto:" + document.getElementById('email').value + "?subject=" + document.getElementById('subject').value + "&body=" + document.getElementById('message').value);
  }, 320);
}
input {
  text-align: center;
  border-top: none;
  border-right: none;
  border-left: none;
  height: 10vw;
  font-size: 2vw;
  width: 100vw;
}

textarea {
  text-align: center;
  border-top: none;
  border-right: none;
  border-left: none;
  border-radius: 5px;
  width: 100vw;
  height: 50vh;
  font-size: 2vw;
}

button {
  border: none;
  background-color: white;
  position: fixed;
  right: 5px;
  top: 5px;
  transition: transform .5s;
}

input:focus {
  outline: none;
  color: orange;
  border-radius: 3px;
}

textarea:focus {
  outline: none;
  color: orange;
  border-radius: 7px;
}

button:focus {
  outline: none;
  transform: scale(0);
  transform: rotate(360deg);
}
<!DOCTYPE html>
<html>

<head>
  <title>Send Email</title>
</head>

<body align=center>
  <input id="email" type="email" placeholder="yourfreind@something.somthing"></input><br><br>
  <input id="subject" placeholder="Subject"></input><br>
  <textarea id="message" placeholder="Message"></textarea><br>
  <button id="send" onclick="send()"><img src=https://www.dropbox.com/s/chxcszvnrdjh1zm/send.png?dl=1 width=50px height=50px></img></button>
</body>

</html>


它使用的是电子邮件客户端,也不是直接来自javascript。
Weijing Jay Lin

2
同样,虽然有一个完整的示例很不错,但是CSS只会使事情感到困惑,因为每个人都必须将其过滤掉才能理解示例。没有冒犯的意思。
丹·蔡斯

2

JavaScript无法从网络浏览器发送电子邮件。但是,从已经尝试实现的解决方案中退一步,您可以做一些符合原始要求的事情:

发送电子邮件而不刷新页面

您可以使用JavaScript构造电子邮件所需的值,然后向实际发送电子邮件的服务器资源发出AJAX请求。(我不知道您使用的是什么服务器端语言/技术,所以这部分取决于您。)

如果您不熟悉AJAX,快速的Google搜索将为您提供很多信息。通常,您可以使用jQuery的$ .ajax()函数使其快速启动并运行。您只需要在服务器上有一个页面即可在请求中调用。


2

看来实现此目的的一个“答案”是实现SMPT客户端。有关带有SMTP客户端的JavaScript库,请参阅email.js

这是 SMTP客户端的GitHub存储库。根据存储库的自述文件,似乎可能需要各种填充或填充,具体取决于客户端浏览器,但总体而言,它似乎确实可行(如果实际上并没有显着实现),甚至无法通过合理的方式轻松描述:在这里长答案。


2

有一项组合服务。您可以将上面列出的解决方案(例如山d)与服务EmailJS结合使用,这可以使系统更安全。他们还没有启动服务。


2

从JavaScript发送电子邮件的另一种方法是使用 directtomx.com,如下所示;

 Email = {
 Send : function (to,from,subject,body,apikey)
    {
        if (apikey == undefined)
        {
            apikey = Email.apikey;
        }
        var nocache= Math.floor((Math.random() * 1000000) + 1);
        var strUrl = "http://directtomx.azurewebsites.net/mx.asmx/Send?";
        strUrl += "apikey=" + apikey;
        strUrl += "&from=" + from;
        strUrl += "&to=" + to;
        strUrl += "&subject=" + encodeURIComponent(subject);
        strUrl += "&body=" + encodeURIComponent(body);
        strUrl += "&cachebuster=" + nocache;
        Email.addScript(strUrl);
    },
    apikey : "",
    addScript : function(src){
            var s = document.createElement( 'link' );
            s.setAttribute( 'rel', 'stylesheet' );
            s.setAttribute( 'type', 'text/xml' );
            s.setAttribute( 'href', src);
            document.body.appendChild( s );
    }
};

然后从您的页面调用它,如下所示;

 window.onload = function(){
    Email.apikey = "-- Your api key ---";
    Email.Send("to@domain.com","from@domain.com","Sent","Worked!");
 }

补充一下,假设您可以访问SMTP服务器,另一种方法是在smtpjs.com/smtp.js上使用此脚本,如下所示;Email.send(“ from@you.com”,“ to@them.com”,“主题”,“正文”,“ smtp.yourisp.com”,“用户名”,“密码”);-请参阅smtpjs.com
Fiach Reid,

1
可以使用smtp.js发送html吗?
亚历杭德罗·考雷多

@AlejandroCorredor-是的,您可以通过SMTPJS发送HTML电子邮件
Fiach Reid

2

我会使用SMTPJs库来做到这一点,为您的凭据(例如用户名,密码等)提供加密。


1
真的不愿意将我的SMTP密码提供给一个小公司,这样他们就可以使用我的服务器发送电子邮件,而我所获得的只是密码。我不付钱。他们没有强大的动力来保持服务运行/真正保护我的凭据/不使用我的服务器发送垃圾邮件。
昆汀

我知道@Quentin,但是这个库可以回答这个问题。
Suhail Mumtaz Awan

2

您不能直接回答您的问题,因为我们不能仅使用javascript发送电子邮件,但是可以使用javascript来为我们发送电子邮件:

1)使用api并通过javascript调用api来为我们发送电子邮件,例如https://www.emailjs.com表示,您可以在进行某些设置后使用以下代码来调用其api:

var service_id = 'my_mandrill';
var template_id = 'feedback';
var template_params = {
name: 'John',
reply_email: 'john@doe.com',
message: 'This is awesome!'
};

emailjs.send(service_id,template_id,template_params);

2)创建一个后端代码来为您发送电子邮件,您可以使用任何后端框架来为您执行此操作。

3)使用类似:

window.open('mailto:me@http://stackoverflow.com/');

这将打开您的电子邮件应用程序,这可能会进入浏览器的阻止弹出窗口。

通常,发送电子邮件是服务器的任务,因此应使用后端语言完成,但是我们可以使用javascript收集所需的数据并将其发送到服务器或api,也可以使用第三奇偶校验应用程序并打开它们通过浏览器使用javascript,如上所述。


5
回复(1):我真的很不愿意将我的SMTP密码提供给一个小公司,以便他们可以使用我的服务器发送电子邮件,而只需要我的密码即可。我不付钱。他们没有强大的动力来保持服务运行/真正保护我的凭据/不使用我的服务器发送垃圾邮件。
昆汀

0

简短的答案是您不能仅使用JavaScript来完成。您需要一个服务器端处理程序才能与SMTP服务器连接以实际发送邮件。在线上有许多简单的邮件脚本,例如用于PHP的脚本:

使用Ajax将请求发送到PHP脚本,使用js检查必填字段是否为空或不正确,并且还记录服务器发送给谁的邮件记录。

function sendMail() is good for doing that.

检查从脚本发送邮件时捕获的任何错误,并采取适当的措施。
例如,要解决此问题,如果邮件地址不正确或由于服务器问题而无法发送邮件,或者在这种情况下邮件处于排队状态,请立即向用户报告,并防止多次发送同一封电子邮件。使用jQuery GET和POST从脚本中获取响应

$ .get(URL,callback); $ .post(URL,callback);


-1

由于这些都是非常棒的信息,因此有一个名为Mandrill的小API 可以从javascript发送邮件,并且效果很好。您可以试一试。这是一个入门的小教程


-5

使用JavaScript或jQuery发送电子邮件

var ConvertedFileStream;
var g_recipient;
var g_subject;
var g_body;
var g_attachmentname;


function SendMailItem(p_recipient, p_subject, p_body, p_file, p_attachmentname, progressSymbol) {

    // Email address of the recipient 
    g_recipient = p_recipient;

   // Subject line of an email
    g_subject = p_subject;

   // Body description of an email
    g_body = p_body;

    // attachments of an email
    g_attachmentname = p_attachmentname;

    SendC360Email(g_recipient, g_subject, g_body, g_attachmentname);

}

function SendC360Email(g_recipient, g_subject, g_body, g_attachmentname) {
    var flag = confirm('Would you like continue with email');
    if (flag == true) {

        try {
            //p_file = g_attachmentname;
            //var FileExtension = p_file.substring(p_file.lastIndexOf(".") + 1);
           // FileExtension = FileExtension.toUpperCase();
            //alert(FileExtension);
            SendMailHere = true;

            //if (FileExtension != "PDF") {

            //    if (confirm('Convert to PDF?')) {
            //        SendMailHere = false;                    
            //    }

            //}
            if (SendMailHere) {
                var objO = new ActiveXObject('Outlook.Application');

                var objNS = objO.GetNameSpace('MAPI');

                var mItm = objO.CreateItem(0);

                if (g_recipient.length > 0) {
                    mItm.To = g_recipient;
                }

                mItm.Subject = g_subject;

                // if there is only one attachment                 
                // p_file = g_attachmentname;
                // mAts.add(p_file, 1, g_body.length + 1, g_attachmentname);

                // If there are multiple attachment files
                //Split the  files names
                var arrFileName = g_attachmentname.split(";");
                 // alert(g_attachmentname);
                //alert(arrFileName.length);
                var mAts = mItm.Attachments;

                for (var i = 0; i < arrFileName.length; i++)
                {
                    //alert(arrFileName[i]);
                    p_file = arrFileName[i];
                    if (p_file.length > 0)
                    {                     
                        //mAts.add(p_file, 1, g_body.length + 1, g_attachmentname);
                        mAts.add(p_file, i, g_body.length + 1, p_file);

                    }
                }

                mItm.Display();

                mItm.Body = g_body;

                mItm.GetInspector.WindowState = 2;

            }
            //hideProgressDiv();

        } catch (e) {
            //debugger;
            //hideProgressDiv();
            alert('Unable to send email.  Please check the following: \n' +
                    '1. Microsoft Outlook is installed.\n' +
                    '2. In IE the SharePoint Site is trusted.\n' +
                    '3. In IE the setting for Initialize and Script ActiveX controls not marked as safe is Enabled in the Trusted zone.');
        }
    }
  }

3
请详细说明此代码如何回答问题。
2016年

看来这是使用ActiveX,并且只能在安装了Outlook的PC上的IE中使用var objO = new ActiveXObject('Outlook.Application');
2016年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.