自动打开默认电子邮件客户端并预填内容

115

我需要在用户保存某个页面内容时自动打开其默认电子邮件客户端。我需要填充电子邮件主题、地址,并将一些内容放入电子邮件正文中。

如何最好地实现这个功能?

我知道 mailto: 属性,但是用户必须点击它,而且我不确定它是否允许您指定主题和内容?


你可以在mailto前缀的href中设置电子邮件的每个部分。这是我制作的一个工具,使其变得非常简单:mailto.now.sh - Dawson B
4个回答

170
根据RFC 6068所述,mailto允许您指定主题、正文以及抄送字段。例如:

mailto:username@example.com?subject=Subject&body=message%20goes%20here

用户不需要点击链接,如果您使用JavaScript强制打开它
window.location.href = "mailto:user@example.com?subject=Subject&body=message%20goes%20here";

请注意,浏览器/电子邮件客户端处理mailto链接的方式并没有单一的标准(例如,主题和正文字段可能会被丢弃而不发出警告)。此外,强制打开mailto链接可能会被弹出窗口和广告拦截器、防病毒软件等静默阻止。

1
有没有一种方法可以使用jQuery将图像(而不是URL,而是实际图像)加载到消息中? - Kousha
10
如果消息超过字符限制怎么办?这是一个不错的解决方法,但它似乎并不是一种优雅的解决方案。 - flumingo
2
如果我需要添加其他内容,例如图像、CSS或HTML,该怎么办? - UDID
1
以上细节是否可以附带发送附件? - Ajay Sharma
如果超过字符限制,您可以使用encodeURIComponent(body)。 但是电子邮件正文的长度仍可能受到电子邮件客户端或收件人电子邮件服务的限制。 - ullas kakanadan

21

JQuery:

$(function () {
      $('.SendEmail').click(function (event) {
        var email = 'sample@gmail.com';
        var subject = 'Test';
        var emailBody = 'Hi Sample,';
        var attach = 'path';
        document.location = "mailto:"+email+"?subject="+subject+"&body="+emailBody+
            "?attach="+attach;
      });
    });

HTML:

 <button class="SendEmail">Send Email</button>

10
如何通过这种方式发送HTML内容 - Amay Kulkarni

6

没有使用Jquery实现的方式:

<button class="emailReplyButton" onClick="sendEmail(message)">Reply</button>

function sendEmail(message) {
    var email = message.emailId;
    var subject = message.subject;
    var emailBody = 'Hi '+message.from;
    document.location = "mailto:"+email+"?subject="+subject+"&body="+emailBody;
}

3
尝试这样做: 它将直接打开默认的电子邮件。
<a href="mailto:demo@demo.com"><img src="ICON2.png"></a>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接