Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何检查邮件是否已成功发送_C#_.net_Asp.net_Smtp - Fatal编程技术网

C# 如何检查邮件是否已成功发送

C# 如何检查邮件是否已成功发送,c#,.net,asp.net,smtp,C#,.net,Asp.net,Smtp,我正在开发一个Asp.Net应用程序,如果用户忘记密码,我将向其电子邮件地址发送邮件 我想检查一下邮件是否发送成功。 有什么方法可以确定吗 编辑 如果电子邮件id不存在,那么我会检测到故障。如果您的SmtpMail.Send(message)方法没有返回错误,这意味着电子邮件已发送到SMTP服务器,那么您不在您的管辖范围内,这就是您可以知道的范围。根据: S:220 smtp.example.com ESMTP后缀 C:HELO relay.example.org S:250你好,relay.e

我正在开发一个Asp.Net应用程序,如果用户忘记密码,我将向其电子邮件地址发送邮件

我想检查一下邮件是否发送成功。 有什么方法可以确定吗

编辑


如果电子邮件id不存在,那么我会检测到故障。

如果您的
SmtpMail.Send(message)
方法没有返回错误,这意味着电子邮件已发送到SMTP服务器,那么您不在您的管辖范围内,这就是您可以知道的范围。

根据:

S:220 smtp.example.com ESMTP后缀
C:HELO relay.example.org
S:250你好,relay.example.org,很高兴认识你
C:邮寄地址:
S:250好的
C:RCPT至:
S:250好的
C:RCPT至:
S:250好的
C:数据
S:354结束数据与。
C:摘自:“鲍勃的例子”
C:致:爱丽丝的例子
C:Cc:theboss@example.com
C:日期:2008年1月15日星期二16:02:43-0500
C:主题:测试消息
C:
你好,爱丽丝。
C:这是一条测试消息,消息正文中有5个标题字段和4行。
C:你的朋友,
C:鲍勃
C:。
S:250正常:以12345排队
C:退出
S:221再见
{服务器关闭连接}
只要服务器说
250 Ok:以12345的形式排队,您就无法确定它是否真的发送了电子邮件,或者是否已发送。

否。电子邮件(基于SMPT)是一种不可靠的传输协议,尽管存在一些检测电子邮件已被接收和读取的黑客行为,例如,通过在电子邮件中嵌入个性化图像URL并跟踪收件人的客户端已请求该图像,没有绝对可靠的方法来满足您的请求。

如果发送问题,该方法将引发异常。但是除了将该邮件发送到SMTP服务器之外,无法知道它是否从那里发送到目标。

将.Send(msg)方法放入try-catch块中,然后捕获SmtpFailedRecipientException

try
{
    mail.Send(msg);
}
catch (SmtpFailedRecipientException ex)
{
    // ex.FailedRecipient and ex.GetBaseException() should give you enough info.
}

如果您正在使用System.Net.Mail,请尝试

message.DeliveryNotificationOptions = System.Net.Mail.DeliveryNotificationOptions.OnSuccess;

您可以使用DeliveryNotificationOptions来接收收据

如果有名为mail的
MailMessage
对象,请执行以下操作:

mail.DeliveryNotificationOptions = DeliveryNotificationOptions.OnSuccess;

我正在使用gmail SMTP发送邮件与我的程序。即使存在SmtpFailedRecipientException陷阱,发送的假邮件也会返回Ok

但当我向outlook查询我的gmail收件人时,我发现邮件并没有附带说明。带有主题交付状态通知(失败)

我的问题是,有没有可能在节目中得到这个通知

我找到了这个但不是给爸爸的


aaah以16秒的优势击败了我:(那该怎么办?这只是一个设置,没有任何解释。@codingbiz,如果你再添加
message.Headers.add(“处置通知到”youremail@email.com“”;
它将向发送电子邮件”youremail@email.com"如果消息成功。还有一个枚举值
System.Net.Mail.DeliveryNotificationOptions.OnFailure
,它将在失败时发送通知。显示您是否确实跟踪/检查了它?是否有跟踪smtp通信的工具?基于Linux?在我的情况下,使用“坏的收件人地址”和“好的发件人地址”,不会引发错误。我只是ca当存在错误的发件人地址时出现错误。
mail.DeliveryNotificationOptions = DeliveryNotificationOptions.OnSuccess;