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

背景:

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

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

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

简介:

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

在HTML中使用mailto

1.使用方式:

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

<a href="mailto:[email protected]">Email</a>

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

<form name=‘sendmail‘ action=‘mailto:[email protected]‘>
   <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支持以下几种参数:

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

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

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

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

效果是这样的:

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

这种方式不需要用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:[email protected]?body="+body);
    document.getElementById("send").click();
}
$(document).load(
    $(".btn").click(sendEmail);
);

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

demo

参考:

时间: 2024-10-25 02:48:41

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

回顾JS如何向网页中输入内容,与浏览器窗口进行交互

第2章 请和我互动(常用互动方法) 本章节主要讲解如何向网页中输入内容,如何与浏览器窗口进行交互,通过简单的对象方法就可以轻松实现. 2-1 JavaScript-输出内容(document.write) 2-2 JavaScript-警告(alert 消息对话框) 2-3 JavaScript-确认(confirm 消息对话框) 2-4 JavaScript-提问(prompt 消息对话框) 2-5 JavaScript-打开新窗口(window.open) 2-6 JavaScript-关闭

如何获取一个AlertDialog中的EditText中输入的内容

怎么获取一个AlertDialog中的EditText中输入的内容? new AlertDialog.Builder(this)   .setTitle("请输入")   .setIcon(android.R.drawable.ic_dialog_info)   .setView(new EditText(this))   .setPositiveButton("确定", null)   .setNegativeButton("取消", null

ASP.NET中Literal控件的使用方法(用于向网页中动态添加内容)

原文:https://www.jb51.net/article/82855.htm 可以将 Literal 控件用作网页上其他内容的容器.Literal 控件最常用于向网页中动态添加内容.简单的讲,就是可以把 HTML 代码写到 Literal 控件上,直接呈现出来. 一.常见Literal属性 属性 描述 Text 指定 Literal 控件中显示的文本.在用户的浏览器中,这会显示为 HTML. Mode 指定控件如何处理添入其中的标记. 二.基础用法 前台 LiteralTest.aspx

APPium连接真机输入框中输入的内容与代码中不一致

今天解决了上一个问题,又碰到了一个新的问题. 问题:连接真机输入框中输入的内容与代码中不一致. 描述: 想实现登录页面输入用户名和密码自动登录,可是在输入用户名和密码的框中输入的内容总是与代码中的不一致,初步感觉到应该和输入发有关系,于是把用户名和密码都换成数字可以成功登录,但是真实的用户名很有可能含有字母,所以继续学习实践.把手机默认输入法换成英文的,再运行一次代码,用户名"clinvab001"可以正常输入,但是密码输入又出了问题,在网上各种寻找,几经实践终于找到了解决的办法了,在

Input Text关键字——模拟向一个输入框中输入文字内容

Input Text关键字:模拟向一个输入框中输入文字内容. 该关键字接受2个参数 [ locator | text ]:locator参数指的是定位界面元素的方式,text参数指的是需要输入的内容. ==================================================================================== 示例:打开百度页面,输入“robot framework”,这里采用id的方式来定位界面输入框元素. Open Browser 

对文本框中输入的内容放大显示和格式化

在最近做的项目中,发现用户在输入手机号.身份证或者银行卡这些重要的数据的时候,文本框显示的文字不是非常大,也不是非常明显的显示给用户. 往往这些重要数据用户都需要核对好几次,在确保正确无误的时候才敢点击保存,这样总会浪费一点时间,对用户的体验也不是非常友好,如果我们能在用户输入框的上面对输入的内容进行放大.颜色突出并且按照不同的分隔显示,是不是这样更能便于用户快速的核实数据呢. 于是自己利用业务时间就动手封装了一个小插件: 第一步:创建一个样式表sytle.css 1 @charset "utf

C#注册URL协议,使用浏览器打开本地程序,类似网页上点了QQ交谈打开本地QQ客户端程序

本教程适用于Windows系统 从浏览器上打开本地程序,主要用到了本地URL协议,其实主要就是改注册表 先建立一个项目,我建的是控制台项目 在Program.cs写2个静态方法用来添加注册表.移除注册表(用浏览器打开程序主要就是靠这两个方法) /// <summary> /// 注册启动项到注册表 /// </summary> public static void Reg() { //注册的协议头,即在地址栏中的路径 如QQ的:tencent://xxxxx/xxx 我注册的是ju

Android中如何解析网页,获取网页中的元素内容

问题: 由于android的WebView等相关类没有提供解析html网页内容的接口,我们想要获取网页的内容并解析出我们想要的元素内容,用android的固有API是没办法了. 这里我提供两种解析html思路:第一种,使用第三方解析html库:第二种,使用JAVA与JS回调,通过JS解析html. 之前研究了一下htmlparser这个开源库,但是发现和android提供的库有冲突,但其在纯java应用程序下是可行的. htmlparser下载地址:http://htmlparser.sourc

网页中禁用 复制内容的功能

在<body>标签中添加几个属性值就好: <body oncontextmenu="return false" onselectstart ="return false" onselect="document.selection.empty()" onbeforecopy="return false" >