【原】移动web页面给用户发送邮件的方法 (邮件含文本、图片、链接)
微信商户通有这么一个需求,用户打开H5页面后,引导用户到电脑下载设计资源包,由于各种内部原因,被告知无后台资源支持,自己折腾了一段时间找了下面2个办法,简单做下笔记。
mailto使用方法
1、基础写法
当浏览者点击这个链接时,浏览器会自动调用默认的客户端电子邮件程序,并在收件人框中自动填上收件人的地址下面
<a href="mailto:xxx@foxmail.com">单击这里给peun发电子邮件</a>
2、在收件人地址后用?cc=开头,填写抄送地址(android存在兼容问题)
<a href="mailto:xxx@foxmail.com?cc=lina@qq.com">单击这里给peun发电子邮件</a>
3、紧跟着抄送地址之后,写上&bcc=,填上密件抄送地址(android存在兼容问题)
<a href="mailto:xxx@foxmail.com?cc=lina@qq.com&bcc=luna@qq.com">单击这里给peun发电子邮件</a>
注意:在添加这些功能时,第一个功能以"?"开头,后面的以"&"开头
4、包含多个收件人、抄送、密件抄送人,用分号隔(;)开多个收件人的地址即可实现
<a href="mailto:xxx@foxmail.com;dana@foxmail.com">单击这里给peun发电子邮件</a>
5、包含主题,用?subject=可以填上主题
<a href="mailto:xxx@foxmail.com?subject=【邀请函】">单击这里给peun发电子邮件</a>
6、包含内容,用?body=可以填上内容
内容包含文本,使用%0A给文本换行
<a href="mailto:xxx@foxmail.com?body=邀请您参加腾讯onepiece分享%0A%0A期待您的到来%0A%0Apeunzhang">单击这里给peun发电子邮件</a>
内容包含链接,含http(s)://等的文本自动转化为链接
<a href="mailto:xxx@foxmail.com?body=http://www.cnblogs.com/PeunZhang/">单击这里给peun发电子邮件</a>
内容包含图片,PC端不支持
<a href="mailto:xxx@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 ...
- 【原】web页面登陆验证
using Itcast.Mall.Model; using System; using System.Collections.Generic; using System.Linq; using Sy ...
- 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 ...
- 移动端WEB页面
百度前端技术学院第一阶段任务十一,关于移动端WEB页面布局,参考资料如下(都是一些网页链接): MDN:手机网页开发 MDN:在移动浏览器中使用viewport元标签控制布局 移动前端开发和 Web ...
随机推荐
- [C#] 走进异步编程的世界 - 剖析异步方法(下)
走进异步编程的世界 - 剖析异步方法(下) 序 感谢大家的支持,这是昨天发布<走进异步编程的世界 - 剖析异步方法(上)>的补充篇. 目录 异常处理 在调用方法中同步等待任务 在异步方法中 ...
- webpack配置别名alias出现的错误匹配
@(webpack) webpack是一款功能强大的前端构建工具,不仅仅是针对js,它也可通过各种loader来构建相关的less,html,image等各种资源,将webpack配合流程制定工具gu ...
- 【NLP】Tika 文本预处理:抽取各种格式文件内容
Tika常见格式文件抽取内容并做预处理 作者 白宁超 2016年3月30日18:57:08 摘要:本文主要针对自然语言处理(NLP)过程中,重要基础部分抽取文本内容的预处理.首先我们要意识到预处理的重 ...
- Vertica 业务用户指定资源池加载数据
之前在"Vertica 安装,建库,新建测试用户并授予权限,建表,入库"这篇文章也简单介绍过入库部分的内容. 但之前测试用例若用于生产环境有明显的局限性: 1.是用dbadmin管 ...
- 分页插件思想:pc加载更多功能和移动端下拉刷新加载数据
感觉一个人玩lol也没意思了,玩会手机,看到这个下拉刷新功能就写了这个demo! 这个demo写的比较随意,咱不能当做插件使用,基本思想是没问题的,要用就自己封装吧! 直接上代码分析下吧! 布局: & ...
- CSS教程:div垂直居中的N种方法以及多行文本垂直居中的方法
在说到这个问题的时候,也许有人会问CSS中不是有vertical-align属性来设置垂直居中的吗?即使是某些浏览器不支持我只需做少许的CSS Hack技术就可以啊!所以在这里我还要啰嗦两句,CSS中 ...
- ASP.NET 截获服务器生成的将要发送到客户端的html的方法
有时候我们需要在将服务器端生成的html发送带客户端之前对这些html进行操作,比如生成静态html加之保存.改变生成的html中的某些内容等等,那么久可以通过如下的方案解决. 我总结了两种方式,个人 ...
- pycharm连接mysql数据库
新的环境配置pycharm的项目时,发现pycharm不能连接到mysql数据库.由于安了java环境但是还没配置相关的库,并且jetbrains家的IDE一般都是java写的,于是猜想可能是java ...
- HTML5 oninput实时监听输入框值变化的完美方案
在网页开发中经常会碰到需要动态监听输入框值变化的情况,如果使用 onkeydown.onkeypress.onkeyup 这个几个键盘事件来监测的话,监听不了右键的复制.剪贴和粘贴这些操作,处理组合快 ...
- 什么是WebPack,为什么要使用它?
1.什么是Webpack WebPack可以看做是模块打包机:它做的事情是,分析你的项目结构,找到JavaScript模块以及其它的一些浏览器不能直接运行的拓展语言(Scss,TypeScript等) ...