这有点令人困惑解释,所以在这里忍受我...
我想建立一个系统,用户可以通过我的网站发送模板化的电子邮件,除非它实际上并没有使用我的服务器发送 - 它只是打开他们自己的本地邮件客户端,并准备好电子邮件.应用程序将使用预定义变量填充电子邮件正文,以保存用户必须自己键入.然后,如果消息不完全符合他们的目的,他们可以根据需要编辑消息.
我希望它通过用户的本地邮件客户端有很多原因,因此让服务器发送电子邮件不是一个选择:它必须是100%客户端.
我已经有一个主要运行的解决方案,我会发布详细信息作为答案,我想知道是否有更好的方法?
我现在这样做的方式基本上是这样的:
HTML:
Javascript:
function sendMail() { var link = "mailto:me@example.com" + "?cc=myCCaddress@example.com" + "&subject=" + escape("This is my subject") + "&body=" + escape(document.getElementById('myText').value) ; window.location.href = link; }
令人惊讶的是,这很有效.唯一的问题是,如果身体特别长(超过2000个字符),那么它只是打开一个新的电子邮件,但它没有信息.我怀疑它与超出URL的最大长度有关.
这是使用jQuery和"元素"点击的方式:
$('#element').click(function(){ $(location).attr('href', 'mailto:?subject=' + encodeURIComponent("This is my subject") + "&body=" + encodeURIComponent("This is my body") ); });
然后,您可以通过从输入字段(即使用$('#input1').val()
或通过服务器端脚本)提供内容来获取您的内容$.get('...')
.玩得开心
你不需要任何javascript,你只需要你的href编码如下:
email me here!
如何在文本框上进行实时验证,一旦超过2000(或任何最大阈值),则显示"此电子邮件太长,无法在浏览器中完成,请launch what you have in your email client
"
我有
.launchEmailClientLink { cursor: pointer; color: #00F; }
并将jQuery这个放入你的onDomReady中
$('.launchEmailClientLink').bind('click',sendMail);