我有一个页面(特别是Chrome开发人员扩展程序),用于调试某些软件的客户端安装。如果客户需要更多帮助来解决他们正在观察的特定问题,我们希望他们能够通过电子邮件向我们发送问题文档。
有没有办法让mailto添加(作为电子邮件正文中的附件或框架)mailto所在的当前html页面的文件?该页面是在本地动态生成的,因此最好不要将该页面上传到除电子邮件之外的任何地方。
答案 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:创建包含两个链接的文本消息:
页面网址
页面的png捕获网址。
有用于捕获屏幕的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页面并将其发送给任何他们想要的人。