如何在Java中跟踪电子邮件?

时间:2009-11-17 08:42:25

标签: java email

我如何跟踪电子邮件?

我在服务器端使用java来发送电子邮件。我想跟踪它是否被交付,打开等......我怎么能这样做?

6 个答案:

答案 0 :(得分:9)

这不是Java特定问题。

  1. 您可以创建HTML电子邮件,并嵌入一个不可见的gif,它将向您的服务器报告。某些软件(如Outlook和某些网络邮件程序)会阻止这种不受信任的电子邮件。
  2. 您可以申请回执。许多邮件程序完全忽略了这一点,并且通常不会询问用户是否要发送它。
  3. 示例:

    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());
}