2010-05-22 114 views

回答

5

当然不是一个直接的答案,但here是一个伟大的文章从编码恐怖关于通过代码发送电子邮件,它解决您的问题。

2

考虑到电子邮件是万无一失的,这可能相当困难。除非你得到一个例外,由于证书错误等原因表示客户端 - 服务器通信问题,否则你无法知道邮件是否成功发送(意思是:到达收件人)。

1

我个人从来没有遇到过这个问题的答案,因为没有真正的方法可以让您的邮件离开您的位置,一旦它离开您就不会被扔掉。你也许可以尝试检查发送邮箱的NDR(没有发送报告),但你并不总是被授予获得一个

4

简单的答案是,如果它是一个可检测的失败,然后SmtpClient.Send将抛出一个SmtpFailedRecipientsException(它会抛出一个如果存在连接问题,则为SmtpException)。

长的答案是,由于许多原因,你不一定会得到一个例外。这可能是因为您的SMTP服务器正在缓冲发送(或者将它设置为本地iis或本地目录),或者仅仅是因为SMTP服务器不支持返回这些错误代码。

大多数广告邮件系统通过设置有效的“发件人地址”并监控该帐户的收件箱来跟踪反弹。但是,即使如此,也不是万无一失的(例如,不在办公室的消息)。

我会坚持捕捉异常并留下其他人。如果您不确定电子邮件是否有效,也许您应该向用户发送验证其电子邮件地址的代码。

1

如果你的意思是发送成功,那么其他海报说,如果它不能发送,那么你会得到一个例外。如果你确实意味着成功接收,那么这是一个完全不同的问题。 SMTP根本没有一种机制来查明邮件是否已经被收件人收到,有时你会得到一个ndr,如果服务器不能提供你不会的其他时间。你可以尝试做垃圾邮件发送者所做的事情,那就是在查询字符串中用唯一标识符在你的html电子邮件正文中放置某种图像链接。这将允许你链接到图像网址的人与电子邮件。但是,这只会告诉你,如果网址被击中,电子邮件已被阅读,它不会告诉你,该电子邮件没有收到,因为收件人可能根本没有允许的图像显示在他们的电子邮件客户端。

相关问题