.NET邮件-如果地址无效,邮件将不会出现异常。-C#

.NET邮件-如果地址无效,邮件将不会出现异常。-C#,c#,.net,email,smtp,C#,.net,Email,Smtp,阅读多篇关于.net邮件传递通知的文章,并测试了多项内容: 尽管我仍然被困在这里。我想做到的是:我只想知道邮件发送到的电子邮件地址是否有效,不是有效格式,而是有效:电子邮件地址是否存在 有时,用户会将电子邮件发送到某个地址,但意外地键入1个字母错误,邮件是有效的,因为它包含域和@,但邮件地址不存在。发件人将认为它已正确发送,因为他们没有收到任何通知 我想确保发件人收到未送达的通知 例如,当使用代码通过Outlook发送邮件时,如果邮件地址不存在,您会自动收到一封未送达的邮件,但是使

阅读多篇关于.net邮件传递通知的文章,并测试了多项内容:

尽管我仍然被困在这里。我想做到的是:我只想知道邮件发送到的电子邮件地址是否有效,不是有效格式,而是有效:电子邮件地址是否存在

有时,用户会将电子邮件发送到某个地址,但意外地键入1个字母错误,邮件是有效的,因为它包含域和@,但邮件地址不存在。发件人将认为它已正确发送,因为他们没有收到任何通知

我想确保发件人收到未送达的通知

例如,当使用代码通过Outlook发送邮件时,如果邮件地址不存在,您会自动收到一封未送达的邮件,但是使用SMTP(我)就没那么幸运了。我用以下代码进行了尝试:

 using (var msg = new MailMessage())
 using (var client = new SmtpClient("spamfilter.mySpamFilter.com", 587))
        {

           msg.IsBodyHtml = true;
           msg.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure;

           msg.From = new MailAddress(FromAddress);

           msg.To.Add(TO);

           msg.Body = Body;
           msg.Subject = Subject;

           //Send mail
           try
           {
               client.Send(msg);
           }
           catch (SmtpFailedRecipientsException ex)
           {

               throw ex;
           }
        }
对于
To
地址,我创建了一个100%无效的地址。尽管如此,例外情况从未出现过

spamfilter会成为问题吗?例如,当我检查spamfilter时,我可以看到邮件具有无效电子邮件地址的
拒绝
发送状态,但
操作状态
允许
(因此没有垃圾邮件)。所以看起来spamfilter永远不会将异常返回到代码中

还是我不可能实现我想要的

Spamfilter:

我认为这里不会出现错误,因为To方法要么使用字符串,要么使用MailAddress,后者也将使用字符串作为输入

因此,这里将接受所有地址。 您是否尝试过放置一些不允许的字符,如“%”或类似的字符? 我想你会有例外。 其他一切都将被禁止发送给smtp,他将负责发送,而不是您的C#代码

问候
Andre

我认为这里不会出现错误,因为To方法接受字符串或MailAddress,后者也将接受字符串作为输入

因此,这里将接受所有地址。 您是否尝试过放置一些不允许的字符,如“%”或类似的字符? 我想你会有例外。 其他一切都将被禁止发送给smtp,他将负责发送,而不是您的C#代码

问候
Andre

并非所有公司和邮件服务器都会回复未送达邮件-通常会关闭该功能以避免钓鱼您无法确保您的代码中确实存在电子邮件地址。由于您的电子邮件未送达,从跳转到无效域可能有几个原因。因此,如果由服务器发送,您应该侦听传递状态消息。此外,您应该像sendgrid、mailchimp等商业提供商那样存储自己的白名单/黑名单数据库。并非所有公司和邮件服务器都会回复未送达的邮件-通常会关闭此功能以避免钓鱼您无法确保您的代码中确实存在电子邮件地址。由于您的电子邮件未送达,从跳转到无效域可能有几个原因。因此,如果由服务器发送,您应该侦听传递状态消息。此外,您应该像sendgrid、mailchimp等商业提供商那样存储自己的白名单/黑名单数据库。