使用 Javascript 发送电子邮件

2022-08-30 05:21:47

这有点令人困惑的解释,所以请耐心等待我在这里...

我想建立一个系统,用户可以通过我的网站发送模板化电子邮件,除了它实际上不是使用我的服务器发送的 - 它只是打开他们自己的本地邮件客户端,电子邮件准备就绪。该应用程序将使用预定义的变量填写电子邮件的正文,以使用户不必自己键入。然后,他们可以根据需要编辑消息,如果它不完全适合他们的目的。

我希望它通过用户的本地邮件客户端进行的原因有很多,因此让服务器发送电子邮件不是一种选择:它必须是100%客户端。

我已经运行了一个大部分工作的解决方案,我将发布它的详细信息作为答案,我想知道是否有更好的方法?


答案 1

我现在这样做的方式基本上是这样的:

The HTML:

<textarea id="myText">
    Lorem ipsum...
</textarea>
<button onclick="sendMail(); return false">Send</button>

The Javascript:

function sendMail() {
    var link = "mailto:me@example.com"
             + "?cc=myCCaddress@example.com"
             + "&subject=" + encodeURIComponent("This is my subject")
             + "&body=" + encodeURIComponent(document.getElementById('myText').value)
    ;
    
    window.location.href = link;
}

令人惊讶的是,这相当有效。唯一的问题是,如果正文特别长(超过2000个字符),那么它只会打开一封新电子邮件,但其中没有信息。我怀疑这与超出URL的最大长度有关。


答案 2

以下是使用jQuery和“元素”单击的方法:

$('#element').click(function(){
    $(location).attr('href', 'mailto:?subject='
                             + encodeURIComponent("This is my subject")
                             + "&body=" 
                             + encodeURIComponent("This is my body")
    );
});

然后,您可以通过从输入字段(即使用或通过带有 的服务器端脚本)提供内容来获取内容。玩得愉快$('#input1').val()$.get('...')