我如何跟踪电子邮件?
我在服务器端使用java来发送电子邮件。我想跟踪它是否被交付,打开等......我怎么能这样做?
答案 0 :(得分:9)
这不是Java特定问题。
示例:
email.AddHeaderField("Disposition-Notification-To","<g.revolution@stackoverflow.com>")
答案 1 :(得分:3)
无法确保始终收到投递或打开邮件通知。
邮件服务商可以接受邮件并在之后删除邮件。 用户可以阅读邮件但不会收到通知。
“Webbugs”(也就是邮件的html源代码中包含允许识别邮件的特殊令牌的图片)在大多数电子邮件程序中都不起作用。
事实上,你不太可能看到有人收到消息。
您可以做的是将邮件保留在您的服务器上,只发送一个链接。如果用户点击它,您可以非常确定他收到了消息。但幸运的是,许多用户不会点击此类链接,因为它用于欺诈和垃圾邮件。
答案 2 :(得分:1)
我想你是通过SMTP发送的。每当您的邮件发送到您的SMTP服务器时,您的Java程序都无法控制它:
1)如果您想知道您的邮件是否已经发送,您应该以某种方式联系您的SMTP服务器(如果SMTP服务器不在您的控制范围内,那么请忘记)并查看您的邮件是否已发送。
2)您无法知道其接收方是否已打开邮件。您可以做的最大值是设置邮件需要确认的标志,但这取决于用户是否明确要发送该确认。其他可能性是在邮件中设置一些链接到您的网站,应该点击该链接以查看内容。您将能够跟踪用户是否点击了该链接。
答案 3 :(得分:0)
如果您发送HTML电子邮件,您可以添加带有一些跟踪参数的1x1像素图像,这些图像会回调您的网络服务器。由于某些电子邮件客户端(和用户)阻止了电子邮件中的图像,因此它不是100%可靠。
答案 4 :(得分:0)
您可以添加类似
<span style="display:none">Tracking no: ${TRACK_NO}</span>
答案 5 :(得分:0)
您可以做的是- 您必须在主体中嵌入一个不可见的图像,src才能在该主体中调用服务器中的页面并记录该事件,您只能使用HTML编码来完成此操作。
示例-
<img src="ImageServer.aspx?imageID=track.jpg& custID=134ghxx34343ai& campID=32434"/>
然后在ImageServer.aspx中将有一个处理代码,该代码将记录该事件或将其保存到数据库。
示例-
private void Page_Load(object sender, System.EventArgs e)
{
// content type should be resolved programmatically
Response.ContentType = "image/jpeg";
if (!IsPostBack) Track();
Response.WriteFile(GetImageFileByID());
}