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

统计邮件的打开率

    博客分类:
  • 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-mailjetMailjetAPI实现用来提供批量发送邮件统计等功能

    通过这个API,你可以执行各种操作,包括但不限于创建和发送电子邮件、管理联系人列表、跟踪邮件打开和点击率等。 在Python中使用Mailjet API,通常需要安装相应的库,比如`python-mailjet`或`mailjet-rest`。这些库...

    基于PHP的FastMail EDM邮件到达率精准测试工具 php版.zip

    6. **报告和统计**:工具应能生成详细的报告,展示邮件发送的总体效果,如送达率、打开率、点击率等,帮助优化邮件营销策略。 7. **反垃圾邮件策略**:了解并遵循邮件服务提供商的反垃圾邮件政策是提高邮件到达率的...

    超云邮件系列,日发万封邮件

    5. **邮件跟踪与统计**:超云邮件系列可能包含邮件打开率、点击率等关键数据的追踪功能,帮助用户评估邮件营销的效果,以便调整策略。 6. **用户管理**:支持导入和管理邮件联系人列表,便于对不同的收件人群体进行...

    万能邮件采集器是万能的!万能邮件

    3. **跟踪分析**:提供邮件发送后的统计报告,如送达率、打开率、点击率等,以便优化邮件策略。 4. **自动化工作流**:通过设置触发条件,实现邮件的自动化发送,如新用户欢迎邮件、购物车放弃提醒等。 5. **名单...

    基于ASP的邮件群发统计系统 v1.0.zip

    5. **统计分析**:对发送结果进行统计分析,提供发送量、成功率、打开率、点击率等关键指标。 在基于ASP的邮件群发统计系统中,开发者可能使用ASP的内置对象,如Response和Request,来处理HTTP请求和响应。Response...

    邮件列表程序(英)

    5. **统计分析**:提供报告和统计,如打开率、点击率、退订率等,帮助评估邮件营销的效果。 6. **权限控制**:管理员可以设置不同的访问权限,如仅允许管理员发送邮件,或者允许订阅者自我管理其订阅选项。 7. **...

    经典云技术邮件营销系统 (核心技术)

    最后,系统还提供详细的统计报告,包括送达率、打开率、点击率等关键指标,帮助企业评估邮件营销的效果并优化策略。 【邮件技术】 邮件技术涵盖了从邮件编码、反垃圾邮件策略到邮件服务器配置等多个方面。经典云...

    人工智能在邮件群发中的应用.pptx

    - **实时追踪与分析**:通过对邮件打开率、点击率和退订率等关键指标的实时监控,获取有价值的反馈数据,用于后续邮件内容和策略的优化。 - **个性化邮件定制**:结合用户的历史行为、偏好等信息,动态调整邮件...

    纵横邮件列表管理系统 v1.2

    此外,系统可能具有日志记录和统计分析功能,帮助用户追踪邮件发送的成功率,了解邮件打开和点击情况,以便优化邮件营销策略。 从压缩包文件名称"zhmail1.2"来看,这可能是纵横邮件列表管理系统 v1.2 的安装包或者...

    9duMail邮件群发系统 1.0.zip

    此外,系统还支持设置个性化的发件人信息,包括名称、回复地址等,以增加邮件的可信度,提高邮件的打开率和阅读率。 在邮件模板方面,9duMail提供丰富的预设模板,涵盖了各种常见的营销场景,如产品推广、新闻通讯...

    cnmai邮件群发系统

    5. **发送报告**:系统会生成发送报告,包括发送状态、成功/失败统计、打开率、点击率等关键指标,帮助用户评估邮件群发的效果。 6. **权限管理**:根据企业需求,可能设有不同级别的用户权限,以控制不同人员对...

    魔众EDM邮件营销系统

    该系统允许用户通过自定义模板,创建具有吸引力的邮件内容,同时提供了详细的发送报告,以监控邮件的打开率、点击率等关键指标。 ### 系统组成部分 1. **说明.htm**:这可能是一个简短的系统介绍或概述文件,通常...

    MDaemon邮件服务器.docx

    2. **统计信息**:可能包含邮件服务器的性能指标,如处理的邮件数量、邮件队列的长度、成功率和失败率等。这些信息有助于管理员识别潜在的问题,如网络延迟、邮件阻塞或垃圾邮件过滤情况。 3. **会话详细信息**:当...

    ASP邮件群发系统完整版

    例如,添加新的功能,如邮件跟踪(查看邮件是否被打开)、报告生成(统计发送结果)等。 总的来说,ASP邮件群发系统利用ASP技术实现了自动化、高效的邮件发送,对于需要批量发送邮件的组织和个人来说,是一个实用的...

    邮件群发大师V2012

    2. **自定义邮件内容**:用户可以根据自己的需求创建个性化的邮件模板,包括文本、图片、链接等元素,使得邮件更具吸引力,提高打开率。 3. **智能反垃圾邮件机制**:内置的反垃圾邮件策略能帮助邮件避免被目标邮箱...

    9duMail邮件群发系统.zip

    此外,还可能提供详细的统计报告,包括送达率、打开率、点击率等关键指标,帮助优化邮件营销策略。 5. **SMTP服务器集成**:9duMail支持连接多种SMTP服务器,如Gmail、Yahoo、Outlook等,也可以配置自定义SMTP...

    在线邮件列表发送系统 v1.2.rar

    5. **发送策略**:系统应具备定时发送功能,用户可以设置特定时间自动发送邮件,以确保邮件在最佳时段到达收件人邮箱,提高打开率和阅读率。 6. **报告与统计**:系统应该能够跟踪邮件的发送状态,如发送成功、失败...

    Abot邮件群发系统.

    用户可以追踪邮件的打开率、点击率、退订率等关键指标,了解邮件营销的效果,从而优化邮件内容和发送策略。这些数据对于评估营销活动的成功与否至关重要。 在合规性上,Abot邮件群发系统遵循了相关的电子邮件营销...

    邮件列表管理程序.tar.gz

    4. **日志和统计**:记录每次邮件发送的详细信息,包括成功发送、失败、打开率、点击率等,以便分析效果和优化策略。 5. **用户管理**:管理员可以查看和管理订阅者列表,包括添加、删除、编辑用户,以及导入导出...

    备战十一黄金周 巧用邮件群发掘金.docx

    U-Mail系统提供了详尽的效果统计,包括发送成功率、失败率、打开率和点击率等,帮助商家了解邮件的接收情况和用户反馈,从而调整策略,优化客户列表。 面对即将到来的十一黄金周,商家需要提前规划邮件群发活动,...

Global site tag (gtag.js) - Google Analytics