【原】移动web页面给用户发送邮件的方法 (邮件含文本、图片、链接)

微信商户通有这么一个需求,用户打开H5页面后,引导用户到电脑下载设计资源包,由于各种内部原因,被告知无后台资源支持,自己折腾了一段时间找了下面2个办法,简单做下笔记。

  1. 使用maito功能,让用户自己给自己发送一份包含资源包的下载链接
  2. 调用QQ邮件分享功能,让用户自己给自己发送一份包含资源包的下载链接

maito使用方法

1、基础写法

当浏览者点击这个链接时,浏览器会自动调用默认的客户端电子邮件程序,并在收件人框中自动填上收件人的地址下面

<a href="mailto:[email protected]">单击这里给peun发电子邮件</a>

2、在收件人地址后用?cc=开头,你可以填写抄送地址(android存在兼容问题)

<a href="mailto:[email protected][email protected]">单击这里给peun发电子邮件</a>

3、紧跟着抄送地址之后,写上&bcc=,就可以填上密件抄送地址(android存在兼容问题)

<a href="mailto:[email protected][email protected]&[email protected]">单击这里给peun发电子邮件</a>

注意:在添加这些功能时,第一个功能以"?"开头,后面的以"&"开头

4、包含多个收件人、抄送、密件抄送人,用分号隔(;)开多个收件人的地址即可实现

<a href="mailto:[email protected];[email protected]">单击这里给peun发电子邮件</a>

5、包含主题,用?subject=可以填上主题

<a href="mailto:[email protected]?subject=【邀请函】">单击这里给peun发电子邮件</a>

6、包含内容,用?body=可以填上内容

内容包含文本,使用%0A给文本换行

<a href="mailto:[email protected]?body=邀请您参加腾讯onepiece分享%0A%0A期待您的到来%0A%0Apeunzhang">单击这里给peun发电子邮件</a>

内容包含链接,含http(s)://等的文本自动转化为链接

<a href="mailto:[email protected]?body=http://www.cnblogs.com/PeunZhang/">单击这里给peun发电子邮件</a>

内容包含图片,PC端不支持

<a href="mailto:[email protected]?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:[email protected];[email protected];[email protected][email protected];[email protected]&[email protected]&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);
        }
    })

缺点

  1. 部分用户打开邮箱后不知道是自己给自己发送邮件
  2. 部分用户没有手机邮箱账户,点击打开邮件后不会设置,放弃下载
  3. 邮件成功后,被部分客户端当做垃圾邮件处理,用户找不到邮件

于是在此缺点的上补充了手机自带的复制功能,保证用户可以拿到下载链接,完善后下载量也提升了~

长按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);
    })

缺点

  1. 需要发送下载链接到PC的微信或者QQ等,操作不方便

调用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(""));
})();

缺点

  1. 移动端并没有做兼容,手机设备上操作难度大
  2. 没有设置viewport,页面内容特别小
  3. 没有微信登陆授权操作,需要手动输入QQ账号

综合考虑,最终选择了maito和a标签长按复制方法的结合,如果大家有更好的方法请留言!

时间: 2024-08-01 14:35:48

【原】移动web页面给用户发送邮件的方法 (邮件含文本、图片、链接)的相关文章

web页面中参数的传递方法

在web页面中参数的传递方法多样,主要有以下几种: Viewstate,Querystring,Session, Application,Cookie,Cache. Viewstate: 特点:服务启启动的各种控件的视图状态:包括控件的所有属性值:Enableviewstate可以启用和禁用视图状态:        优点:防止新产生一个页面实例后,丢失前一个页面的状态信息: 例如:在用户登录注册验证过程中,无须使用导致服务器往返行程的代码,我们只需要在客户端进行验证就可以了.另外有些控件的初始化

【原】web页面登陆验证

using Itcast.Mall.Model; using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; namespace Itcast.Mall.WebApp.Code { //AuthBasePage是自己新建的一个类,然后让这个类继承System.Web.UI.Page; public class AuthBasePage:Page

web 页面间传值 js 封装方法

用法 var id = getParam("id"); function getParam(strKey) { var url=document.URL; //var url="file://wqasdasd/www/1.html?id=2&index=5"; var para=""; if(url.lastIndexOf(strKey)<0) { } else { if(url.lastIndexOf("?")

移动端WEB页面

百度前端技术学院第一阶段任务十一,关于移动端WEB页面布局,参考资料如下(都是一些网页链接): MDN:手机网页开发 MDN:在移动浏览器中使用viewport元标签控制布局 移动前端开发和 Web 前端开发的区别是什么 Alloyteam移动开发规范概述 手机/移动前端开发需要注意的20个要点 w3cplus响应式技术资源 浅谈移动Web开发 Alloyteam Mars 移动WEB开发入门 移动开发资源集合 The Mobile Web Handbook MobileWeb 适配总结 移动前

【原】移动web页面兼容处理的思考

本月收到一份关爱里程碑的邮件,入职满3周年了,从一个懵懂的新人到从容淡定的小油条,在外辛苦打工不容易,能收到一封简单的关怀邮件也是有感欣慰,这里祝愿公司越发展越好. 进入主题,移动网页设计中,很多同学常问一个问题:这么多种移动设备,要兼容哪几类呢? 相信很多人会回答主流的系统ios.android,但是这2个系统又有多个版本,如ios就有4.5.6.7,android有2.2.2.3.3.0.4.1.4.2,包括我之前提到winphone 8,大家也在考虑到底该不该兼容,这是一件非常头疼的事情,

web页面动态加载UserControl,并调用用户控件中的方法来初始化控件

1,HTML页 头部注册: <%@ Register Src="~/WorkLog/WorkLogNewV1/UserControl/CeShiBu.ascx" TagPrefix="UserControl" TagName="CeShiBu"%> <%@ Register Src="~/WorkLog/WorkLogNewV1/UserControl/KaiFaBu.ascx" TagPrefix=&quo

移动web页面前端开发总结

移动web在当今的发展速度是一日千里,作为移动领域的门外汉,在这段时间的接触后,发现前端开发这一块做一个小小的总结. 1.四大浏览器内核 1.Trident (IE浏览器) :因为在早期IE占有大量的市场份额,所以以前有很多网页是根据这个Trident的标准来编写的,但是实际上这个内核对真正的网页标准支持不是很好,同时存在许多安全Bug. 2.Gecko:( FireFox )优点就是功能强大.丰富,可以支持很多复杂网页效果和浏览器扩展接口,缺点是消耗很多的资源,比如内存. 3.Webkit:

Linux+postfix+extmail+dovecot打造基于web页面的邮件系统

Linux+postfix+extmail+dovecot打造基于web页面的邮件系统 linuxwebmysqlapacheredhat数据库服务器 Linux+postfix+extmail+dovecot打造基于web页面的邮件系统 最终效果图: 准备阶段:需要手动下载的软件包: postfix-2.6.5.tar.gz courier-authlib-0.62.4.tar.bz2 eextmail-1.2.tar.gz xtman-1.1.tar.gz Time-HiRes-1.9707

php与web页面交互(二)

一.获取表单数据 1.1 使用POST()方法提交表单  ---POST()方法可以没有限制地传递数据到服务器,所提交的数据在后台传输,用户在浏览器端是看不到这一过程的,安全性高,适用于发送保密数据和大容量数据到服务器. 范例: 1 <form name="form1" method="post" action="index2.php"> 2 <table border="1" width="400