JS中使用mailto实现将用户在网页中输入的内容传递到本地邮件客户端


Posted in Javascript onOctober 08, 2016

背景:

想在自己的网站中有这样一个设计:

JS中使用mailto实现将用户在网页中输入的内容传递到本地邮件客户端

用户点击提交按钮之后,就会打开本地邮件客户端,并自动将他在输入框中输入的内容作为邮件的内容,像下面这样:

JS中使用mailto实现将用户在网页中输入的内容传递到本地邮件客户端JS中使用mailto实现将用户在网页中输入的内容传递到本地邮件客户端

mailto可以帮助实现这个功能。

简介:

mailto是一种电子邮件协议,通过该协议可以创建一个指向电子邮件地址的超级链接,通过该链接可以在Internet中发送电子邮件。就像在地址栏输入一个网址会打开一个网页一样,输入mailto:name@email.com,就会打开本地邮件客户端,并将邮件发送给name@email.com。

在HTML中使用mailto

 1.使用方式:

一种方式是将mailto链接写在a标签的href属性中:

<a href="mailto:name@email.com">Email</a>

另一种是写在form的action属性中

<form name='sendmail' action='mailto:name@email.com'>
 <input name='name' type='text'>
 <input name='subject' type='text' >
 <input name='email' type='text' >
 <input name='number' type='text' >
 <input name='body' type='text' >
</form>

2.传递参数:

mailto支持以下几种参数:

JS中使用mailto实现将用户在网页中输入的内容传递到本地邮件客户端

这两种方式都可以传递参数,但是效果不太一样。

如果使用a标签的话,只能在mailto链接中添加参数:

<a href="mailto:to?subject=subject&cc=cc&body=body">send mail</a>

第一个参数后面添加?,其他参数之间用&连接。

效果是这样的:

JS中使用mailto实现将用户在网页中输入的内容传递到本地邮件客户端

如果用form的话,在mailto链接中传递的参数和效果与使用a的相同,他的特别之处是他会把input中的name属性的值和其输入内容也传递进去:

JS中使用mailto实现将用户在网页中输入的内容传递到本地邮件客户端

这种方式不需要用JS获取输入框中的内容,直接可以将用户输入的内容更新到邮件内容区,但是有一个明显的缺点,就是它传进去的格式很不美观也很不方便。几乎没有人会用这样的方式发送邮件,用户还需要自己删掉等号,自己调整样式。

所以我选择用a标签来打开mailto链接,通过JS将内容格式化之后作为参数传递给a标签。

<p class="title">CONTACT ME</p>
  <ul class="email">
   <li><input type="text" name="name" placeholder="Name"></li>
   <li><input type="text" name="email" placeholder="Email Address"></li>
   <li><input type="text" name="number" placeholder="Phone Number"></li>
   <li class="message"><textarea name="message" placeholder="Message"></textarea> </li>
   <button class="btn btn-define">Submit</button>
   <a href="mailto" id="send"></a>
  </ul>

创建一个隐形的a标签,当用户输入好内容点击按钮之后,js会取得输入框中的内容,并且格式化后传递给a,然后模拟点击a标签。

JQuery代码:

function sendEmail(){
 var name=$("[name='name']").val(),
  email=$("[name='email']").val(),
  number=$("[name='number']").val(),
  message=$("[name='message']").val(),
  body="My Name is: "+name+"%0a%0d"
   +"My Email Address is: "+email+"%0a%0d"
   +"My Phone Number is: "+number+"%0a%0d"
   +"Message:"+"%0a%0d"+message;
 $("#send").attr("href","mailto:mamengyi1121@163.com?body="+body);
 document.getElementById("send").click();
}
$(document).load(
 $(".btn").click(sendEmail);
);

其中的%0d%0a是回车符合换行符,我的邮件客户端不能解析HTML格式的字符,(传递<br>无法实现换行),传递UTL编码则可以实现。

Javascript 相关文章推荐
理解Javascript_03_javascript全局观
Oct 11 Javascript
基于Jquery实现表格动态分页实现代码
Jun 21 Javascript
JQuery魔力之$(&quot;tagName&quot;)与selector
Mar 05 Javascript
javascript 原型链维护和继承详解
Nov 26 Javascript
JavaScript取得WEB安全颜色列表的方法
Jul 14 Javascript
jQuery地图map悬停显示省市代码分享
Aug 20 Javascript
Vue.js学习笔记之 helloworld
Aug 14 Javascript
JS常用函数和常用技巧小结
Oct 15 Javascript
Babel 入门教程学习笔记
Jun 13 Javascript
vue动态绑定class的几种常用方式小结
May 21 Javascript
React 父子组件通信的实现方法
Dec 05 Javascript
在vue中封装方法以及多处引用该方法详解
Aug 14 Javascript
Javascript单例模式的介绍和实例
Oct 08 #Javascript
jquery把int类型转换成字符串类型的方法
Oct 07 #Javascript
jquery判断类型是不是number类型的实例代码
Oct 07 #Javascript
js判断是否为空和typeof的用法(详解)
Oct 07 #Javascript
浅谈js的ajax的异步和同步请求的问题
Oct 07 #Javascript
jquery删除table当前行的实例代码
Oct 07 #Javascript
JS控制FileUpload的上传文件类型实例代码
Oct 07 #Javascript
You might like
php通过baihui网API实现读取word文档并展示
2015/06/22 PHP
php+ajax实现无刷新分页
2015/11/18 PHP
weiphp微信公众平台授权设置
2016/01/04 PHP
网页中实现浏览器的最大,最小化和关闭按钮
2007/03/12 Javascript
两个DIV等高的JS的实现代码
2007/12/23 Javascript
仅IE支持clearAttributes/mergeAttributes方法使用介绍
2012/05/04 Javascript
ExtJs中gridpanel分组后组名排序实例代码
2013/12/02 Javascript
关于jQuery中的each方法(jQuery到底干了什么)
2014/03/05 Javascript
jQuery简单实现遍历数组的方法
2015/04/14 Javascript
jquery实现先淡出再折叠收起的动画效果
2015/08/07 Javascript
jQuery实现分隔条左右拖动功能
2015/11/21 Javascript
学习使用jquery iScroll.js移动端滚动条插件
2020/03/24 Javascript
浅谈JavaScript异步编程
2017/01/20 Javascript
JavaScript无阻塞加载和defer、async详解
2017/02/26 Javascript
jQuery实现用户信息表格的添加和删除功能
2017/09/12 jQuery
js 判断一个数字是不是2的n次方幂的实例
2017/11/26 Javascript
将jquery.qqFace.js表情转换成微信的字符码
2017/12/01 jQuery
JS删除数组里的某个元素方法
2018/02/03 Javascript
利用vue.js实现被选中状态的改变方法
2018/02/08 Javascript
vue引入js数字小键盘的实现代码
2018/05/14 Javascript
ionic3双击返回退出应用的方法
2019/09/17 Javascript
vue中destroyed方法的使用说明
2020/07/21 Javascript
vue2.0 解决抽取公用js的问题
2020/07/31 Javascript
Python判断变量是否已经定义的方法
2014/08/18 Python
Python语言描述最大连续子序列和
2017/12/05 Python
Python日志无延迟实时写入的示例
2019/07/11 Python
Django之编辑时根据条件跳转回原页面的方法
2019/08/21 Python
Python基础之字符串操作常用函数集合
2020/02/09 Python
python super()函数的基本使用
2020/09/10 Python
校友会欢迎辞
2014/01/13 职场文书
求职信标题怎么写
2014/05/26 职场文书
英文商务邀请函范文
2015/01/31 职场文书
团支部书记竞选稿
2015/11/21 职场文书
Python基础之操作MySQL数据库
2021/05/06 Python
Python自动化测试PO模型封装过程详解
2021/06/22 Python
在Spring-Boot中如何使用@Value注解注入集合类
2021/08/02 Java/Android