我希望我的网站有能力发送电子邮件而不刷新页面。我想用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...    */
}

当前回答

我知道我写这个问题的答案已经太迟了,但我认为这将用于任何想通过javascript发送电子邮件的人。

我建议的第一种方法是在服务器上使用回调来完成此操作。如果你真的想用javascript处理它,下面是我的建议。

我发现最简单的方法是使用smtpJs。一个可以用来发送电子邮件的免费图书馆。

1.包括如下所示的脚本

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

2. 你可以发一封这样的邮件

Email.send ({ 主持人:“smtp.yourisp.com”, 用户名:" Username ", 密码:Password, 致:“them@website.com” 来自:“you@isp.com”, 主题:“这就是主题”, 身体:“这就是身体” }) ( 消息=>警报(消息) );

这是不可取的,因为它将显示您的密码在客户端。因此,您可以执行以下操作,加密SMTP凭据,并将其锁定到单个域,并传递一个安全令牌而不是凭据。

Email.send ({ SecureToken:“C973D7AD-F097-4B95-91F4-40ABC5567812”, 致:“them@website.com” 来自:“you@isp.com”, 主题:“这就是主题”, 身体:“这就是身体” }) ( 消息=>警报(消息) );

最后,如果你没有SMTP服务器,你可以使用SMTP中继服务,如弹性邮件

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

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

其他回答

我知道我写这个问题的答案已经太迟了,但我认为这将用于任何想通过javascript发送电子邮件的人。

我建议的第一种方法是在服务器上使用回调来完成此操作。如果你真的想用javascript处理它,下面是我的建议。

我发现最简单的方法是使用smtpJs。一个可以用来发送电子邮件的免费图书馆。

1.包括如下所示的脚本

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

2. 你可以发一封这样的邮件

Email.send ({ 主持人:“smtp.yourisp.com”, 用户名:" Username ", 密码:Password, 致:“them@website.com” 来自:“you@isp.com”, 主题:“这就是主题”, 身体:“这就是身体” }) ( 消息=>警报(消息) );

这是不可取的,因为它将显示您的密码在客户端。因此,您可以执行以下操作,加密SMTP凭据,并将其锁定到单个域,并传递一个安全令牌而不是凭据。

Email.send ({ SecureToken:“C973D7AD-F097-4B95-91F4-40ABC5567812”, 致:“them@website.com” 来自:“you@isp.com”, 主题:“这就是主题”, 身体:“这就是身体” }) ( 消息=>警报(消息) );

最后,如果你没有SMTP服务器,你可以使用SMTP中继服务,如弹性邮件

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

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

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);

你可以在这篇文章中找到在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(或任何语言)脚本来发送电子邮件。

有一种组合服务。您可以将上面列出的解决方案(如mandrill)与EmailJS服务结合使用,这可以使系统更加安全。 不过他们还没有开始服务。

Javascript是客户端,你不能用Javascript发邮件。浏览器可能只识别mailto:,并启动默认的邮件客户端。