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



我正在做电子邮件跟踪像素项目,我想确保用户在考虑之前至少花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响应?

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

  1. 第一个点@GetMapping("/wait30second/{emailID}"),收到请求后,休眠30秒,发送302重定向到第二个点...your-site.../images/{emailID},例如:https://www.baeldung.com/spring-redirect-and-forward
  2. 第二点@GetMapping("/images/{emailID}")只是固定重复访问像素service.saveTracking(emailID),不停顿30秒。302重定向由客户端执行。因此,如果没有重复上诉,就意味着这封信没有被阅读。

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

相关内容

  • 没有找到相关文章

最新更新