在发送了大量的邮件后,如何才能知道有多少人打开了这封邮件呢,又如何知道是哪些客户打开邮件呢?一开始想好像很难实现,其实只要稍微想一下,其实实现的方法可以很简单。实现的思路就是,当客户打开这封邮件的时候,能够向我们的服务器发送一条请求,请求上带有相关信息,这样我们就能够获取到我们要的信息了。
基于以上的需求,我用直接java做了一个实现。
其中要求发的邮件中要带这样一条代码:
<img src="http://localhost:8080/analysis-mail/analysis?t_email=xxxxx@xx.xxx" style="display:none;"/>
其中t_email参数就是表示该邮件所往的邮箱。
以下代码:
AnalysisServlet
这是核心类:
package com.tongtongxue.analysis; import java.io.IOException; import java.sql.Connection; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class AnalysisServlet extends HttpServlet { private static final long serialVersionUID = 2154562813857678799L; @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { Connection conn = null; try { conn = DBUtil.getConn(); String email = req.getParameter("t_email"); String createDateTime = DateUtil.date2Str(); String ip = req.getRemoteAddr(); if (email == null) { email = ""; } if (ip == null) { ip = ""; } AnalysisBean analysisBean = new AnalysisBean(email, ip, createDateTime); AnalysisDao analysisDao = new AnalysisDao(conn); analysisDao.add(analysisBean); } catch (Exception e) { e.printStackTrace(); } finally { try { DBUtil.close(null, null, conn); } catch (Exception e) { e.printStackTrace(); } } } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { this.doGet(req, resp); } }
AnalysisBean
统计信息java bean
package com.tongtongxue.analysis; public class AnalysisBean { private Integer id; private String email; private String ip; private String createDateTime; public AnalysisBean() { } public AnalysisBean(String email, String ip, String createDateTime) { this.email = email; this.ip = ip; this.createDateTime = createDateTime; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getIp() { return ip; } public void setIp(String ip) { this.ip = ip; } public String getCreateDateTime() { return createDateTime; } public void setCreateDateTime(String createDateTime) { this.createDateTime = createDateTime; } }
AnalysisDao
package com.tongtongxue.analysis; import java.sql.Connection; import java.sql.PreparedStatement; public class AnalysisDao { private Connection conn; public AnalysisDao(Connection conn) { this.conn = conn; } public void add(AnalysisBean analysisBean) throws Exception { String sql = "insert into t_analysis(email, ip, createDateTime) values(?, ?, ?)"; PreparedStatement pstmt = conn.prepareStatement(sql); pstmt.setString(1, analysisBean.getEmail()); pstmt.setString(2, analysisBean.getIp()); pstmt.setString(3, analysisBean.getCreateDateTime()); pstmt.executeUpdate(); DBUtil.close(null, pstmt, null); } }
DBUtil
数据库工具类:
package com.tongtongxue.analysis; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; public class DBUtil { public static final String url = "jdbc:mysql://127.0.0.1/analysis-mail"; public static final String name = "com.mysql.jdbc.Driver"; public static final String user = "root"; public static final String password = ""; public static Connection getConn() throws Exception { Class.forName(name); Connection conn = DriverManager.getConnection(url, user, password); return conn; } public static void close(ResultSet rs, Statement stmt, Connection conn) throws Exception { if (rs != null) { rs.close(); } if (stmt != null) { stmt.close(); } if (conn != null) { conn.close(); } } }
DateUtil
时间工具类:
package com.tongtongxue.analysis; import java.text.SimpleDateFormat; import java.util.Date; public class DateUtil { private static String format = "yyyy-MM-dd HH:mm:ss"; public static String date2Str() { SimpleDateFormat sdf = new SimpleDateFormat(format); return sdf.format(new Date()); } }
转载链接:http://www.tongtongxue.com/archives/367.html
更多内容尽在:通通学 - 知识学习与分享平台
相关推荐
在400封邮件(正常邮件与垃圾邮件各一半)的测试集中测试结果为分类准确率95.15%,在仅仅统计词频计算概率的情况下,分类结果还是相当不错的。 **1、准备工作** python3.4开发环境; **2、贝叶斯公式** 我们要做的...
广告系列统计信息(打开的电子邮件,点击率,退订)。 Web控制面板通过API工作。 通过API /面板中的组和操作来完全区分访问权限。要求: MySQL或类似的数据库。 Linux,Windows(全面测试在Linux上进行,很少检查在...
从不同维度统计用户访问情况 自定义查询时间 多种图表展示 支持自定义上报(js错误,api请求,性能信息) 用户访问路径追踪 自定义阈值(注册用户) 自动报警功能,发送报警邮件提醒(注册用户) [技术支持] 前端:...
- 通过分析阅读统计数据来提高您的销售/开放率。mailfly适用于: - 销售人员,他们想要更快地关闭交易,更快地更快。 - 自由职业者/顾问,他们想要从客户那里获得更多领导或想知道他们的客户何时以及如何看电子邮件...
自动生成网络拓扑图,大屏可视化,web SSH(堡垒机),统计分析图表,指令下发批量执行,告警信息推送(如邮件、钉钉、微信、短信等)**。 ## **源码使用** 1.使用IDEA的话(推荐),直接打开wgcloud-server和...
Bounce rate 跳出率 Deliver Rate 送达率(邮件) Unique open rate 打开率(邮件) 微博 Unique CTR(click through rate)点击率 关注数 Conversion rate 转化率 转发数 ROI(return on investment)投资回报率 ...
速卖通数据分析 数据分析 速卖通数据分析全文共43页,当前为第1页。 课程大纲 数据分析的意义 速卖通... newsletter数据说明 以打开率20%,点击率30%,转化率2%计算,发送10000封最终点击人数大概2000个人打开邮件,60
使用IE浏览器,Google搜索引擎搜索源代码统计程序,打开排列最前的大概10个网页,还没来得及看即有了下面的第一个特征。 估计是gif中漏洞被利用,执行了嵌入代码,防火墙设置阻止其访问网络之后,又重启系统,该文件...
TU Dresden邮箱中有关新电子邮件的通知 Google搜索中的缩写,例如“ tumail”打开OWA Mail TU Dresden 德累斯顿工业大学IT服务的快捷方式,例如Alt + O,可打开Opal Hisqisi&cool table中的成绩统计 ...更多选项...
使用IE浏览器,Google搜索引擎搜索源代码统计程序,打开排列最前的大概10个网页,还没来得及看即有了下面的第一个特征。 估计是gif中漏洞被利用,执行了嵌入代码,防火墙设置阻止其访问网络之后,又重启系统,该文件...
E路通电子传真,用户可以直接用电脑收发传真,操作使用和收发email一样简单便捷,发送成功率高达99%,反垃圾传真成功率,位居同类产品之冠!E路通电子传真具备傻瓜式操作、大量节约传真费用2个特点。主要功能有普通...
6、加强弹窗代码,增加弹率 7、网站主后台广告列表为新版本为计划列表,推崇可置顶 8、数据的导入方式更改,可以直接导入Excel或是TEXT文件 9、验证码后台开关 10、去了基本设置中的直链开关改为发布广告时设定 11、...
3、增加SQL简单防注入功能,用户可打开sql.asp根据提示设置; 4、修正了部分表单处理错误的Bug; 5、删除了一部分冗余的代码及文件。 顺便提醒:新手一定要有看安装说明的习惯,不要所有的程序一拿到手就按平时...
基于Django的测试质量平台:目前包含数据工厂、接口自动化,后续规划:设备管理、代码覆盖率统计、app打包平台、发布流程、项目管理... 目标是做成最好用、最全面的测试质量平台,先介绍下已有的两个平台...
11,后台可添加第三方网站统计代码,方便了解网站访问详情 12,点击QQ、MSN、Skype、淘宝旺旺图标可直接在线聊天 13,可后台更换5张FLASH图片,也可自由显示1-5张广告图,可指定图片链接 14,后台可查看网站占用空间...
添加/编辑/删除分类统计所有分类中商品数,并在前台显示(待完成) 添加/编辑/删除商品 添加/修改商品图片 添加/修改运输方式并设置附加费用添加/修改付款方式(支持在线支付接口)查看/编辑/取消订单每条订单自动...
全民普及,《中国互联网络发展状况统计报告》显示,截至 2016年6月,中国网民规模达7.10亿,互联网普及率达 到51.7%,超过全球平均水平3. 1个百分点。同时,移动 互联网塑造的社会生活形态进一步加强,"互联网+"行动...
详细显示各个的统计信息,包括应考人数、注册人数、及格人数、平均分数、通过率、试卷权限等。 9、新闻管理 如果管理员有重要的信息要发布的话,请在此输入新闻的标题和内容。 10、在线调查管理 课程管理员可以...
即使在⽤户没有打开电脑时,能够通过信息和邮件的⽅式,根据⽤户平常的购买频次和周期,在特定的时间推送 到⽤户⼿机和电脑。 2. 系统设计建设三步曲 1) 建⽴平台⽤户⾏为的召回模型。 基于如下维度来实现: · ⽤户...