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

Tho*_*ley 64 javascript mailto

我需要在页面上保存一些内容时自动打开用户的默认电子邮件客户端.我需要填充电子邮件主题,解决并在电子邮件正文中添加一些内容.

实现这一目标的最佳选择是什么?

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

jsa*_*nen 102

RFC 6068所述,mailto允许您指定主题正文以及cc字段.例如:

mailto:username@example.com?subject=Subject&body=message%20goes%20here
Run Code Online (Sandbox Code Playgroud)

如果您强制使用JavaScript打开它,则用户无需单击链接

window.location.href = "mailto:user@example.com?subject=Subject&body=message%20goes%20here";
Run Code Online (Sandbox Code Playgroud)

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

  • 如果邮件超过了字符限制怎么办?这是一个很好的解决方法,但它似乎不是一个优雅的解决方案. (7认同)
  • 如果我需要添加其他一些内容作为示例图像,CSS或HTML怎么办? (2认同)

小智 7

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;
      });
    });
Run Code Online (Sandbox Code Playgroud)

HTML:

 <button class="SendEmail">Send Email</button>
Run Code Online (Sandbox Code Playgroud)

  • 如何通过这种方式发送HTML内容 (7认同)

小智 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;
}
Run Code Online (Sandbox Code Playgroud)