JAVA电子邮件跟踪像素跟踪阅读时间

问题描述 投票:0回答:2

我正在研究电子邮件跟踪像素项目,我想确保用户在考虑“已读”之前至少花 30 秒阅读电子邮件

我使用 Java Springboot 作为后端服务器和 HTML 来创建电子邮件模板

在我的模板中,我放置了这个像素用于跟踪:

<img id="tr_pixel" src="https://localhost:8080/api/v1/images/1"/>

图像加载后,它将请求我的服务器:

@GetMapping("/images/{emailID}")
public ResponseEntity<byte[]> getImagePixel (@Pathvariable String emailID) {
    try{
      // wait 30seconds before saving the event
      Thread.sleep(30000);
      // If the connection with the client is lost, throw an exception and ignore the next line
      //save tracking only if user spend > 30s 
      service.saveTracking(emailID);

      return ok().contentType(IMAGE_PNG).body(pixel);

    } catch (ConnectionLostException){
       // catch connection lost error if the client close the email before 30s or if did not receive the response
    }
    
}

有没有办法检查与客户端的连接是否丢失,或者客户端是否收到http响应?

java html http spring-mvc outlook
2个回答
4
投票

也许 302 重定向会对您有所帮助。 您定义的不是一个入口点,而是两个入口点就足够了。

  1. 第一个点
    @GetMapping("/wait30second/{emailID}")
    收到请求后,会休眠30秒,然后发送302重定向到第二个点
    ...your-site.../images/{emailID}
    ,例如这样:https://www.baeldung.com/spring-redirect-并-转发
  2. 第二点
    @GetMapping("/images/{emailID}")
    只是修复了对像素的重复访问
    service.saveTracking(emailID)
    没有30秒的停顿。 302重定向由客户端执行。因此,如果没有重复申诉,就说明这封信没有被读过。

但是,请记住,随着此类监控的大量使用,您的电子邮件被标记为垃圾邮件的风险很高。


0
投票

嘿,您能帮我解决有关电子邮件跟踪像素的问题吗? 您能否提供源代码,我如何实现电子邮件跟踪像素

© www.soinside.com 2019 - 2024. All rights reserved.