如何在c#中了解已发送电子邮件的不同状态

时间:2014-03-04 07:32:53

标签: c# email smtp

我正在用c#创建一个应用程序。我必须知道如何知道已发送电子邮件的状态。状态可能是。

4. Track sent emails to determine if they were:
4.1 delivered
4.2 opened
4.3 recipient opt-out
4.4 bounced (with the reason for the bounce)
4.5 time/date sent
4.6 which links in the email were clicked (and time/date they were clicked)
4.7 IP address, if user clicked any links in the email  

我应该使用任何API或Dll或其他东西。请帮助。任何帮助都会得到赞赏。

2 个答案:

答案 0 :(得分:1)

如果您将应用程序编程为通过http://www.sendgrid.comhttp://www.ultrasmtp.com等托管SMTP服务器发送邮件,则可以访问已发送邮件的传递状态。

答案 1 :(得分:0)

没有简单的方法可以做你想做的事。实际上,您的SMTP服务器本身可以跟踪此状态,如果您使用某些第三方SMTP服务器(如GMail或任何公司服务器),我担心如果不使用经过身份验证的客户端,他们将无法访问这些信息。

在C#程序中,如果SmtpClient.Send()方法返回true,则可以假定邮件已传递到SMTP服务器。如果万一发生故障,您应该收到邮件到出站邮件ID的收件箱。如果要在发件箱中显示出站邮件,则应相应地配置IMAP / POP3配置。

据我所知,没有您想要的确切形式的API或DLL。您可以尝试其他方式,例如从服务器跟踪邮件正文中的哈希或嵌入图像。但这些并不可靠,因为大多数现代消息传递服务都有相应的措施。