移动web页面给用户发送邮件的方法
微信商户通有这么一个需求,用户打开H5页面后,引导用户到电脑下载设计资源包,由于各种内部原因,被告知无后台资源支持,自己折腾了一段时间找了下面2个办法,简单做下笔记。
- 使用mailto功能,让用户自己给自己发送一份包含资源包的下载链接
- 调用QQ邮件分享功能,让用户自己给自己发送一份包含资源包的下载链接
mailto使用方法
1、基础写法
当浏览者点击这个链接时,浏览器会自动调用默认的客户端电子邮件程序,并在收件人框中自动填上收件人的地址下面
<a href="mailto:peun@foxmail.com">单击这里给peun发电子邮件</a>
2、在收件人地址后用?cc=开头,填写抄送地址(android存在兼容问题)
<a href="mailto:peun@foxmail.com?cc=lina@qq.com">单击这里给peun发电子邮件</a>
3、紧跟着抄送地址之后,写上&bcc=,填上密件抄送地址(android存在兼容问题)
<a href="mailto:peun@foxmail.com?cc=lina@qq.com&bcc=luna@qq.com">单击这里给peun发电子邮件</a>
注意:在添加这些功能时,第一个功能以"?"开头,后面的以"&"开头
4、包含多个收件人、抄送、密件抄送人,用分号隔(;)开多个收件人的地址即可实现
<a href="mailto:peun@foxmail.com;dana@foxmail.com">单击这里给peun发电子邮件</a>
5、包含主题,用?subject=可以填上主题
<a href="mailto:peun@foxmail.com?subject=【邀请函】">单击这里给peun发电子邮件</a>
6、包含内容,用?body=可以填上内容
内容包含文本,使用%0A给文本换行
<a href="mailto:peun@foxmail.com?body=邀请您参加腾讯onepiece分享%0A%0A期待您的到来%0A%0Apeunzhang">单击这里给peun发电子邮件</a>
内容包含链接,含http(s)://等的文本自动转化为链接
<a href="mailto:peun@foxmail.com?body=http://www.cnblogs.com/PeunZhang/">单击这里给peun发电子邮件</a>
内容包含图片,PC端不支持
<a href="mailto:peun@foxmail.com?body=<img src='http://images.cnblogs.com/cnblogs_com/PeunZhang/286351/o_peunzhang_cnblogs_code.png' width='200' height='200'>">单击这里给peun发电子邮件</a>
8、完整示例,如果mailto后面同时有多个参数的话,第一个参数必须以“?”开头,后面的每一个都以“&”开头
<a href="mailto:aaa@xxx.com;bbb@xxx.com;ccc@xxx.com?cc=ddd@yyy.com;eee@yyy.com&bcc=fff@zzz.com&subject=【邀请函】&body=邀请您参加腾讯onepiece分享">单击这里给peun发电子邮件</a>
知道基本的用法后,回到微信商户通的需求点,有了以下的界面:
发送成功后,在QQ邮箱打开的界面:
体验二维码:
重点代码展示:
HTML
<a href="javascript:;" class="btn btn-green form-btn" id="sendBtn">打开邮箱</a>
javascript
var txt = "?subject=[微信支付停车场行业资源包v1.0]&body=停车场行业 - 微信支付行业设计方案资源包v1.0%0A%0A"
+ "http://action.weixin.qq.com/payact/readtemplate?t=/mobile/merchant/project/parking/download_tmpl%0A%0A"
+ "里面含有:%0A%0A1.停车场行业方案设计模版.ai%0A2.停车场前端页面开发文件.html%0A%0A"
+ "您可以用源文件直接编辑后印刷或开发。%0A%0A"
+ "资源包如果有最新版本会第一时间更新。欢迎继续关注微信支付行业设计方案,或者分享给您的商业伙伴。%0A%0A"
+ "微信支付行业设计方案:%0A%0A"
+ "<img src='http://ol.weixin.qq.com/public/demo/parking/parking_discount/img/code.png' width='200' height='200'>"; var sendBtn = document.getElementById("sendBtn"),
sendName = document.getElementById("sendName");
sendBtn.addEventListener("click",function(e){
sendNameVal = document.getElementById("sendName").value;
if (filter.test(sendNameVal) == false) {
e.preventDefault();
removeClass(info,"hide")
}
else
if(filter.test(sendNameVal) == true){
sendBtn.setAttribute("href","mailto:" + sendNameVal + txt);
}
})
缺点
- 部分用户打开邮箱后不知道是自己给自己发送邮件
- 部分用户没有手机邮箱账户,点击打开邮件后不会设置,放弃下载
- 邮件成功后,被部分客户端当做垃圾邮件处理,用户找不到邮件
于是在此缺点的上补充了手机自带的复制功能,保证用户可以拿到下载链接,完善后下载量也提升了~
长按a标签弹出系统默认菜单,点复制(拷贝),保证用户有办法可以拿到下载链接:
重点代码展示:
HTML
<a href="http://action.weixin.qq.com/payact/readtemplate?t=mobile/merchant/project/parking/download_tmpl" target="_blank" class="copy">http://action.weixin.qq.com/payact/readtemplate?t=mobile/merchant/project/parking/download_tmpl</a>
css
.copy{-webkit-touch-callout: default;}
javascript
//检测平台,PC端可点击a,移动端禁止a
function mobilePreventA(e){
var system = {
win: false,
mac: false,
xll: false,
ipad:false
};
var p = navigator.platform;
system.win = p.indexOf("Win") == 0;
system.mac = p.indexOf("Mac") == 0;
system.x11 = (p == "X11") || (p.indexOf("Linux") == 0);
if (!(system.win || system.mac || system.xll)) {
e.preventDefault();
}
}
var copyBtn = document.querySelector(".copy");
copyBtn.addEventListener("click",function(e){
mobilePreventA(e);
})
缺点
- 需要发送下载链接到PC的微信或者QQ等,操作不方便
调用QQ邮件分享功能
重点代码展示:
<script type="text/javascript">
(function(){
var p = {
url:location.href,
to:'qqmail',
desc:'', /*默认分享理由(可选)*/
summary:'请打开http://www.cnblogs.com/PeunZhang/下载',/*摘要(可选)*/
title:'资源下载',/*分享标题(可选)*/
site:'白树博客',/*分享来源 如:腾讯网(可选)*/
pics:'ttp://images.cnblogs.com/cnblogs_com/PeunZhang/286351/o_peunzhang_cnblogs_code.png' /*分享图片的路径(可选)*/
};
var s = [];
for(var i in p){
s.push(i + '=' + encodeURIComponent(p[i]||''));
}
document.write(["<a target='_blank' ", 'href="http://mail.qq.com/cgi-bin/qm_share?', s.join("&"), '"', ' style="cursor:pointer;text-decoration:none;outline:none"><img src="http://rescdn.qqmail.com/zh_CN/htmledition/images/function/qm_open/ico_share_01.png"/></a>'].join(""));
})();
缺点
- 移动端并没有做兼容,手机设备上操作难度大
- 没有设置viewport,页面内容特别小
- 没有微信登陆授权操作,需要手动输入QQ账号
综合考虑,最终选择了mailto和a标签长按复制方法的结合,如果大家有更好的方法请留言!
作者:白树
移动web页面给用户发送邮件的方法的更多相关文章
- 【原】移动web页面给用户发送邮件的方法 (邮件含文本、图片、链接)
微信商户通有这么一个需求,用户打开H5页面后,引导用户到电脑下载设计资源包,由于各种内部原因,被告知无后台资源支持,自己折腾了一段时间找了下面2个办法,简单做下笔记. 使用mailto功能,让用户自己 ...
- Web页面获取用户控件页面中服务器控件的值
用户控件页面后台: public string P_Name{get { return txt_P_name.Value; }set { txt_P_name.Value = value; }} We ...
- 4、Servlet中的Cookie 用于存储 web 页面的用户信息。
Servlet Cookie 处理 Cookie 是存储在客户端计算机上的文本文件,并保留了各种跟踪信息.Java Servlet 显然支持 HTTP Cookie. 识别返回用户包括三个步骤: 服务 ...
- 1、JavaScript中的Cookie 用于存储 web 页面的用户信息。
总结:每个浏览器都有一定数量限制的cookie.每个浏览器中,每一个cookie都有一个path路径,指向请求访问的网页. -------------------------------------- ...
- 3、JSP中的Cookie 用于存储 web 页面的用户信息。
cookie 在平时生活中的运用 存储用户在网页上的登陆信息,包括账号和密码. 有的网站,登陆的时候,会出现一个选项,问你是否要一周内或者一个月内保持登陆状态.如果你选了,那么一周之内,都不需要再输入 ...
- js灵活打印web页面区域内容的通用方法
我们做网站,经常需要打印页面指定区域的内容,而网上关于这块的说法很多,各种各样的打印控件也不少.但许多打印方案都不怎么好,至少我不喜欢,要么封装复杂,要么难以维护.正好现在的项目也需要用到 ...
- web 页面间传值 js 封装方法
用法 var id = getParam("id"); function getParam(strKey) { var url=document.URL; //var url=&q ...
- 利用Microsoft.Office.Interop.Excel 将web页面转成PDF
网上有很多将Web页面转成PDF的方法,还有许多收费的第三方插件.其实利用Office 自带的将EXCEL发布成PDF的功能就可以实现,如果你的需求没有多复杂,可以采用笔者的方法. 首先将web页面h ...
- 转:Web页面通过URL地址传递参数常见问题及检测方法
Web页面即我们在浏览器中所看到的网页,在Web应用程序中,其页面往往需要进行动态切换和数据交互,页面间的数据常规传递方法有多种,本文主要介绍Web页面处理程序中常见的URL地址参数传递方法,包括概述 ...
随机推荐
- 【问题解决】Eclipse中 ctrl+空格 content assist
改一下你的快捷键设置:window->perferences-->keys--->查找 content assist--->把这个地方改成你想要的就可以了.!
- webpack模块机制浅析【一】
webpack模块机制浅析[一] 今天看了看webpack打包后的代码,所以就去分析了下代码的运行机制. 下面这段代码是webpack打包后的最基本的形式,可以说是[骨架] (function(roo ...
- Failed to load the JNI library "E:\JDK6.0\bin\client\jvm.dll"
在打开Eclipse是错误提示:Failed to load the JNI library "E:\JDK6.0\bin\client\jvm.dll" 如图1所示 图1 遇到这 ...
- Spring-depends on
depends-on用来表示一个bean A的实例化依靠另一个bean B的实例化, 但是A并不需要持有一个B的对象,如果需要的话就不用depends-on. 示例: 步骤一: public clas ...
- intellij springmvc的配置文件报错
报错: Checks references injected by IntelliLang plugin. Cannot resolve bean 解决: File--Settings[或直接CTR ...
- pycharm python模版样式
问题: 我想在创建新的一些python程序的时候,希望在新文件开头添加python版本声明和一些关于时间相关的模版数据 那,如何解决? 1. pycharm ---> setting ---&g ...
- Shell读取配置文件的方法
参考:http://www.cnblogs.com/binbinjx/p/5680214.html 做批量软件安装自动化时,都喜欢用配置文件的方式改变参数,那怎么通过shell读取配置文件的配置呢?参 ...
- CentOS如何把deb转为rpm
说明:可以转换,但不一定可用,可以根据报错提示,安装需要的依赖. 1 安装alien工具,下载地址http://ftp.de.debian.org/debian/pool/main/a/alien/ ...
- 使用TransactionScope做分布式事务协调
//场景是使用在多个数据库之间的协调,.NET 2.0使用一个新的类型 TransactionScope来进行协调,这与之前的COM+协调是相对来说更加方便的 //需要引用一个新的程序集:System ...
- 【转】软件开发工具介绍之 6.Web开发工具
[本文转自http://www.cnblogs.com/dusonchen/archive/2011/02/09/1739087.html ] 1.EditPlus 无论是编写xhtml页面,还是cs ...