`
芝加哥09
  • 浏览: 59225 次
社区版块
存档分类
最新评论

统计邮件的打开率

    博客分类:
  • Java
阅读更多

在发送了大量的邮件后,如何才能知道有多少人打开了这封邮件呢,又如何知道是哪些客户打开邮件呢?一开始想好像很难实现,其实只要稍微想一下,其实实现的方法可以很简单。实现的思路就是,当客户打开这封邮件的时候,能够向我们的服务器发送一条请求,请求上带有相关信息,这样我们就能够获取到我们要的信息了。

 


 

基于以上的需求,我用直接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

 

更多内容尽在:通通学 - 知识学习与分享平台

  • 大小: 95.3 KB
1
1
分享到:
评论
1 楼 wkbulletin 2015-12-25  
aaaaaaaaaa

相关推荐

    python实现基于贝叶斯的简单垃圾邮件分类+源代码+文档说明

    在400封邮件(正常邮件与垃圾邮件各一半)的测试集中测试结果为分类准确率95.15%,在仅仅统计词频计算概率的情况下,分类结果还是相当不错的。 **1、准备工作** python3.4开发环境; **2、贝叶斯公式** 我们要做的...

    gonder:大量电子邮件发件人

    广告系列统计信息(打开的电子邮件,点击率,退订)。 Web控制面板通过API工作。 通过API /面板中的组和操作来完全区分访问权限。要求: MySQL或类似的数据库。 Linux,Windows(全面测试在Linux上进行,很少检查在...

    Web监视:前端监视,性能监视平台。前端监视平台专注于Web端体验数据监视。 监视Web健康的三个方面:页面打开速度(速度测量),页面稳定性(JS错误)和外部服务调用成功率(API)

    从不同维度统计用户访问情况 自定义查询时间 多种图表展示 支持自定义上报(js错误,api请求,性能信息) 用户访问路径追踪 自定义阈值(注册用户) 自动报警功能,发送报警邮件提醒(注册用户) [技术支持] 前端:...

    Free Gmail Email Tracking - MailFly-crx插件

    - 通过分析阅读统计数据来提高您的销售/开放率。mailfly适用于: - 销售人员,他们想要更快地关闭交易,更快地更快。 - 自由职业者/顾问,他们想要从客户那里获得更多领导或想知道他们的客户何时以及如何看电子邮件...

    基于SpringBoot+Bootstrap实现linux自动化运维监控系统,完美实现了分布式监控

    自动生成网络拓扑图,大屏可视化,web SSH(堡垒机),统计分析图表,指令下发批量执行,告警信息推送(如邮件、钉钉、微信、短信等)**。 ## **源码使用** 1.使用IDEA的话(推荐),直接打开wgcloud-server和...

    网站分析-如何做数据分析.pptx

    Bounce rate 跳出率 Deliver Rate 送达率(邮件) Unique open rate 打开率(邮件) 微博 Unique CTR(click through rate)点击率 关注数 Conversion rate 转化率 转发数 ROI(return on investment)投资回报率 ...

    速卖通数据分析.pptx

    速卖通数据分析 数据分析 速卖通数据分析全文共43页,当前为第1页。 课程大纲 数据分析的意义 速卖通... newsletter数据说明 以打开率20%,点击率30%,转化率2%计算,发送10000封最终点击人数大概2000个人打开邮件,60

    修改系统文件的virus

    使用IE浏览器,Google搜索引擎搜索源代码统计程序,打开排列最前的大概10个网页,还没来得及看即有了下面的第一个特征。 估计是gif中漏洞被利用,执行了嵌入代码,防火墙设置阻止其访问网络之后,又重启系统,该文件...

    TUfast_TUD:浏览器扩展,通过TU Dresden IT服务获得更高的生产率:rocket:

    TU Dresden邮箱中有关新电子邮件的通知 Google搜索中的缩写,例如“ tumail”打开OWA Mail TU Dresden 德累斯顿工业大学IT服务的快捷方式,例如Alt + O,可打开Opal Hisqisi&cool table中的成绩统计 ...更多选项...

    病态的行业产品意味着病态的公司或个人

    使用IE浏览器,Google搜索引擎搜索源代码统计程序,打开排列最前的大概10个网页,还没来得及看即有了下面的第一个特征。 估计是gif中漏洞被利用,执行了嵌入代码,防火墙设置阻止其访问网络之后,又重启系统,该文件...

    E路通电子传真(实现企业传真无纸化办公)3.0.2.1版

    E路通电子传真,用户可以直接用电脑收发传真,操作使用和收发email一样简单便捷,发送成功率高达99%,反垃圾传真成功率,位居同类产品之冠!E路通电子传真具备傻瓜式操作、大量节约传真费用2个特点。主要功能有普通...

    中易广告联盟系统v6

    6、加强弹窗代码,增加弹率 7、网站主后台广告列表为新版本为计划列表,推崇可置顶 8、数据的导入方式更改,可以直接导入Excel或是TEXT文件 9、验证码后台开关 10、去了基本设置中的直链开关改为发布广告时设定 11、...

    九酷网络个人主页空间管理系统 v6.2.rar

    3、增加SQL简单防注入功能,用户可打开sql.asp根据提示设置; 4、修正了部分表单处理错误的Bug; 5、删除了一部分冗余的代码及文件。 顺便提醒:新手一定要有看安装说明的习惯,不要所有的程序一拿到手就按平时...

    基于python-Django的测试质量平台+源代码+文档说明

    基于Django的测试质量平台:目前包含数据工厂、接口自动化,后续规划:设备管理、代码覆盖率统计、app打包平台、发布流程、项目管理... 目标是做成最好用、最全面的测试质量平台,先介绍下已有的两个平台...

    小鱼儿外贸网站模板管理系统V3.8

    11,后台可添加第三方网站统计代码,方便了解网站访问详情 12,点击QQ、MSN、Skype、淘宝旺旺图标可直接在线聊天 13,可后台更换5张FLASH图片,也可自由显示1-5张广告图,可指定图片链接 14,后台可查看网站占用空间...

    时代商业版vipshop

    添加/编辑/删除分类统计所有分类中商品数,并在前台显示(待完成) 添加/编辑/删除商品 添加/修改商品图片 添加/修改运输方式并设置附加费用添加/修改付款方式(支持在线支付接口)查看/编辑/取消订单每条订单自动...

    网络安全教育知识三篇.docx

    全民普及,《中国互联网络发展状况统计报告》显示,截至 2016年6月,中国网民规模达7.10亿,互联网普及率达 到51.7%,超过全球平均水平3. 1个百分点。同时,移动 互联网塑造的社会生活形态进一步加强,"互联网+"行动...

    50用户在线考试系统

    详细显示各个的统计信息,包括应考人数、注册人数、及格人数、平均分数、通过率、试卷权限等。 9、新闻管理 如果管理员有重要的信息要发布的话,请在此输入新闻的标题和内容。 10、在线调查管理 课程管理员可以...

    个性化智能推荐系统分析与调研.pdf

    即使在⽤户没有打开电脑时,能够通过信息和邮件的⽅式,根据⽤户平常的购买频次和周期,在特定的时间推送 到⽤户⼿机和电脑。 2. 系统设计建设三步曲 1) 建⽴平台⽤户⾏为的召回模型。 基于如下维度来实现: · ⽤户...

Global site tag (gtag.js) - Google Analytics