SMTP中的传递通知

下面的代码工作正常。 但是我需要将失败或成功通知发送到特定地址(b@technospine.com)。 但是我收到了送货通知邮件到FromMail地址(A@technospine.com)。 你能帮我解决这个问题吗?

SmtpClient smtpClient = new SmtpClient(); MailMessage message = new MailMessage(); MailAddress fromAddress = new MailAddress("A@technospine.com", "BALA"); MailAddress adminAddress = new MailAddress("b@technospine.com"); smtpClient.Host = "Mail Server Name"; smtpClient.Port = 25; smtpClient.UseDefaultCredentials = true; message.From = fromAddress; message.To.Add(_sendTo); //Recipent email message.Subject = _subject; message.Body = _details; message.IsBodyHtml = true; message.Headers.Add("Disposition-Notification-To", "b@technospine.com"); message.DeliveryNotificationOptions = DeliveryNotificationOptions.OnSuccess; message.ReplyTo = adminAddress; smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network; smtpClient.Send(message); 

简短的回答是你所要求的不能以你所假设的直接方式完成。

这只适用于某些条件。 最容易描述的是,如果您用来发送邮件的SMTP服务器与承载收件人电子邮件域的服务器(设置smtpClient的.HOST属性时引用的服务器)相同。 因此,如果您只是发送给本地SMTP邮件服务器上的收件人,那么这可能非常可靠。 但这取决于所使用的特定SMTP服务器软件,也可能取决于它的配置方式。

要解释原因,您必须意识到只有最后一个接收实际托管所需电子邮件地址的邮件的SMTP邮件服务器才能权威地回答问题,这是一个有效的电子邮件地址。 如果消息必须通过任何其他电子邮件服务器来获取此最终权威服务器,则必须将消息从一个服务器顺序切换到链中的下一个服务器,直到它到达最终的权威服务器。 这意味着没有可靠的方法来validation特定地址。 再加上一些域被配置为充当黑洞并吞下非法处理邮件的事实,您可以看到有很多原因导致您无法依赖该方法。

因此,许多到外部域的邮件必须至少打到一个单独的SMTP服务器,并且根据服务器如何回复或转发邮件,它将确定任何特定接收域的结果。 事实上,监视退回邮件的FROM地址并不是万无一失的,因为我之前关于某些主机将某些消息放入黑洞的评论如果看起来没有效果。

如果收件人电子邮件地址有效,则无法立即获得有关成功传递邮件的返回值; 看签名:

 public void Send(MailMessage message) 

只要收件人电子邮件地址无效/伪造,SMTP服务器就会立即通过“无法送达”通知通知发件人(或您为通知指定的任何人)。

SMTP服务器需要定期重试传递。 当收件人电子邮件地址是有效地址但由于某种原因SMTP服务器无法传递邮件时,如果SMTP服务器在一段时间后无法传递邮件,则会向发件人返回失败邮件。

RFC 2821包含更多详细信息。

从2.1节基本结构

换句话说,邮件传输可以在原始SMTP发件人和最终SMTP收件人之间的单个连接中进行,也可以通过中间系统在一系列跳跃中进行。 在任何一种情况下,都会发生对消息负责的正式切换:协议要求服务器承担交付消息或正确报告失败的 责任

见4.5.4和4.5.5节

从6.1节可靠传递和电子邮件回复

如果在接受消息后发送失败,则接收方 – SMTP必须制定并邮寄通知消息。 必须使用信封中的空(“<>”)反向路径发送此通知。 此通知的收件人必须是信封返回路径(或返回路径:行)中的地址。

根据MSDN ,.Send将抛出一个SmtpFailedRecipientsException编辑:如果MESSAGE无法传递给一个或多个收件人。 您可以在exception中找到有关失败收件人属性中的哪一个的信息。 因此,如果您尝试捕获该exception并validation您在exception中寻找的地址,那可能会有所帮助。