.NET 邮件 - 如果地址无效,邮件永远不会出现异常。 - C#
.NET Mail - mail never hits exception if the address is invalid. - C#
阅读多篇关于 .net 邮件投递通知的帖子并测试多项内容:
- Trying to send mail via SMTP. No mails arrives and no exception error
- https://msdn.microsoft.com/en-us/library/system.net.mail.smtpfailedrecipientsexception.aspx
- How to check MailMessage was delivered in .NET?
- https://www.emailarchitect.net/easendmail/sdk/html/o_deliverynotificationoptions.htm
- http://forums.asp.net/p/1189023/2038523.aspx
虽然我仍然卡住了。我想要完成的是以下内容:我只想知道邮件发送到的电子邮件地址是否有效,而不是有效格式但有效:电子邮件地址是否存在。
有时用户会向一个地址发送电子邮件,但不小心输入了 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% 无效的地址。但是,从未达到异常。
垃圾邮件过滤器可能是问题所在吗?例如,当我检查垃圾邮件过滤器时,我可以看到邮件具有无效电子邮件地址的 refused
发送状态,但 action status
是 allowed
(因此没有垃圾邮件)。所以看起来垃圾邮件过滤器永远不会 returns 将异常返回给代码。
或者我想要实现的目标是不可能的?
垃圾邮件过滤器:
我认为您不会在此处遇到错误,因为 To 方法采用字符串或 MailAdress,后者也采用字符串作为输入。
因此这里将接受每个地址。
您是否尝试放置一些不允许的字符,例如 ' " % 或类似的字符?
我想你会在这里得到一个例外。
其他一切都将转发给 smtp,他将负责交付,而不是您的 C# 代码。
问候
安德烈
阅读多篇关于 .net 邮件投递通知的帖子并测试多项内容:
- Trying to send mail via SMTP. No mails arrives and no exception error
- https://msdn.microsoft.com/en-us/library/system.net.mail.smtpfailedrecipientsexception.aspx
- How to check MailMessage was delivered in .NET?
- https://www.emailarchitect.net/easendmail/sdk/html/o_deliverynotificationoptions.htm
- http://forums.asp.net/p/1189023/2038523.aspx
虽然我仍然卡住了。我想要完成的是以下内容:我只想知道邮件发送到的电子邮件地址是否有效,而不是有效格式但有效:电子邮件地址是否存在。
有时用户会向一个地址发送电子邮件,但不小心输入了 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% 无效的地址。但是,从未达到异常。
垃圾邮件过滤器可能是问题所在吗?例如,当我检查垃圾邮件过滤器时,我可以看到邮件具有无效电子邮件地址的 refused
发送状态,但 action status
是 allowed
(因此没有垃圾邮件)。所以看起来垃圾邮件过滤器永远不会 returns 将异常返回给代码。
或者我想要实现的目标是不可能的?
垃圾邮件过滤器:
我认为您不会在此处遇到错误,因为 To 方法采用字符串或 MailAdress,后者也采用字符串作为输入。
因此这里将接受每个地址。 您是否尝试放置一些不允许的字符,例如 ' " % 或类似的字符? 我想你会在这里得到一个例外。 其他一切都将转发给 smtp,他将负责交付,而不是您的 C# 代码。
问候 安德烈