使用mailto在电子邮件中发送当前HTML页面

时间:2015-06-18 15:51:31

标签: html email http google-chrome-extension

我有一个页面(特别是Chrome开发人员扩展程序),用于调试某些软件的客户端安装。如果客户需要更多帮助来解决他们正在观察的特定问题,我们希望他们能够通过电子邮件向我们发送问题文档。

有没有办法让mailto添加(作为电子邮件正文中的附件或框架)mailto所在的当前html页面的文件?该页面是在本地动态生成的,因此最好不要将该页面上传到除电子邮件之外的任何地方。

4 个答案:

答案 0 :(得分:2)

请看这个w3schools示例:http://www.w3schools.com/html/tryit.asp?filename=tryhtml_links_mailto_subject

(格式摘录,您希望href=""全部在一行上)      <a href=" mailto:someone@example.com?cc=someoneelse@example.com &bcc=andsomeoneelse@example.com&subject=Summer%20Party &body=You%20are%20invited%20to%20a%20big%20summer%20party!" target="_top"> Send mail! </a>

您可以根据需要使用javaScript将链接插入到链接中。

编辑:

注意到你可能要小心“大”&#39;页面,因为GET请求(这是)的持续时间有限:maximum length of HTTP GET request?

TL:DR: 如果使用此方法,您可能希望缩小包含的代码的范围

答案 1 :(得分:1)

简短回答:不。

mailto标记中的a仅用于指定电子邮件的链接,而不是指定所述电子邮件的内容。您需要使用某种服务器端AJAX调用。如果可以,我建议使用PHP的mail()函数。

示例

您需要将电子邮件标头设置为符合HTML标准。

因此,如果您正在使用PHP mail()函数:

$headers = "From: " . strip_tags($_POST['req-email']) . "\r\n";
$headers .= "Reply-To: ". strip_tags($_POST['req-email']) . "\r\n";
$headers .= "CC: susan@example.com\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";

mail("target@something.com", "subject", "PLACE HTML HERE", $headers);

然后理论上你可以在AJAX请求中传递来自页面的所有数据:

$.ajax({
    url: "http://my.url.com/endpoint/",
    method: "POST",
    data: {
        page: $("html").html()
    }
});

然后,您只需将其嵌入电子邮件中的某个位置,或直接嵌入到正文中。您甚至可以为GET和POST参数添加额外的数据。

注意

虽然我可以看到这被用于某些调试,但是由于Javascript以某种方式失败或者您的PHP /服务器端代码失败导致了很多错误。我建议您选择的路径,包括我未涵盖的路径,如果您可以访问控制台,POST和GET变量,还应该包括来自控制台,POST和GET变量的数据(尽管小心不要暴露不必要的POST和GET变量)。

还有许多工具,例如Chrome Remote Desktop,可以帮助您查看用户遇到的特定错误和问题。

或者,为了解决mail()函数,您可以嵌入调试Javascript,它可以动态地将调试信息从浏览器(通过AJAX请求)发送到服务器,拦截它以供您分析和调试

答案 2 :(得分:1)

无法使用mailto:

包含附件

执行此操作的一种方法是使用mailto:创建包含两个链接的文本消息:

  1. 页面网址

  2. 页面的png捕获网址。

  3. 有用于捕获屏幕的chrome apis,您可以使用您的服务器或imgur之类的东西来保存捕获。最好使用自己的服务器接收图像,因为imgur可能是您用户的隐私问题。

答案 3 :(得分:0)

似乎完整答案是不可能的,但我想我会分享我所采取的路线。

我有一个id ='save-log'的按钮。在我添加所有必要事件的页面中,我有

document.getElementById('save-log').addEventListener('click',
  function(e){
    chrome.runtime.sendMessage({
      log: document.body.innerHTML
    });
  }
);

然后在后台页面中我有

chrome.runtime.onMessage.addListener(
  function(message, sender, sendResponse) {
    chrome.tabs.create({
      url: "save-log.html?" + message.log
    });
  }
);

最后,在save-log.html中,我有必要的样式信息,空体,然后运行脚本:

document.write(decodeURIComponent(location.search.substring(1)));

现在有一个包含开发人员扩展面板完整副本的新标签,用户可以保存html页面并将其发送给任何他们想要的人。