java - 如何检查java应用程序发送的邮件是否已读?

标签 java jakarta-ee jakarta-mail liferay-6

<分区>

请帮我解决这个要求。

我们正在使用 java 应用程序向用户发送邮件。

现在,我们要实现以下功能。

  1. 当用户打开/阅读邮件时,我们希望将时间戳保存在数据库中。
  2. 此人打开我们发送给他/她的邮件的次数。

请帮助我如何做到这一点。

感谢您的帮助。

最佳答案

一般来说,这是不可能 100% 确定的。电子邮件通常是即发即忘。但是,有一些常用的技巧来获得灵感。

您可以使电子邮件成为嵌入 1 像素图像的 html 电子邮件。当您发送电子邮件时,您为每封外发电子邮件创建一个新的图像 url(我会为每个收件人一个)并将该 url 保存在某个地方(例如在数据库中)。您还必须设置一个非常简单的服务器来接受对您正在创建的图像 url 的请求。然后该服务器响应这些调用,向它们发送相同的简单 1pixel 图像并记录调用了哪个 url(这可以通过一个简单的 Apache 服务器完成,使用访问日志来跟踪 url)。每次用户打开您的电子邮件时,他的电子邮件客户端通常会去加载图像。然后你的服务器收到一个请求,因为你为每个收件人设置了唯一的 url,你知道谁在什么时候打开了电子邮件。警告:如果电子邮件被转发,其他人可以激活相同的链接;用户可以配置客户端不打开图片; ETC。 如果您四处看看,您可能还会发现一些现成的解决方案。

如果您碰巧还可以控制用户的电子邮件服务器和/或电子邮件客户端,那么您还有很多其他的可能性。

关于java - 如何检查java应用程序发送的邮件是否已读?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25160435/

相关文章:

java - 关于在 Java 中将 Image 转换为 byte[] 和反转

Java 多线程 : setPriority()

java - 无法调用index.jsp

security - 如何让每个用户根据他们在 JAAS 中的权限/角色访问特定位置的资源?

javax.mail.MessagingException : Could not convert socket to TLS exception in JAVA

java - 使用javamail阅读邮件出现异常

Javamail API - 如何将 setFrom 更改为您想要的任何内容?

java.lang.SecurityException : signer information does not match signer information of other classes in the same package in PowerMock

java - Protocol Buffer 找不到符号 newBuilder

java - 如何通过使用 Criteria API 将其子实体的属性列入白名单来选择 JPA 实体?