如何检查电子邮件是否存在或发现它已被退回?



我的应用程序向客户端发送电子邮件,但是现在用户想知道邮件是否存在,或者在发送邮件之前通知邮件被退回。

如何在使用c# asp.net发送邮件之前测试User输入的邮件是否存在如果没有,那么我们可以检查一下邮件是否被退回了。

  1. 我看到TELNET命令,但是它不工作。
  2. 我遇到了ListNanny(不知道怎么用)
  3. 我还发现了VRFY和RCPT(到目前为止并没有真正看到太多)

请让我知道是否有人在他们的项目或POC中做过类似的工作。同时,我也在寻找解决方案。

我们使用SMTP服务器发送电子邮件,我们的应用程序是在ASP。网络应用程序。

下面是我的代码示例:
var host = ConfigurationManager.AppSettings[Constants.AppSettings.SMTP_HOST];
var emailFromAddress = ConfigurationManager.AppSettings[Constants.AppSettings.EMAIL_FROM_ADDRESS];
var emailFromName = ConfigurationManager.AppSettings[Constants.AppSettings.EMAIL_FROM_NAME];

using (var mail = new MailMessage())
{
mail.Body = body;
mail.IsBodyHtml = true;
if (!String.IsNullOrEmpty(emailTo))
foreach (var email in emailTo.Split(Constants.Default.EMAILID_SEPARATOR))
mail.To.Add(new MailAddress(email));
if (!String.IsNullOrEmpty(emailCC))
foreach (var email in emailCC.Split(Constants.Default.EMAILID_SEPARATOR))
mail.CC.Add(new MailAddress(email));
mail.From = new MailAddress(emailFromAddress, emailFromName);
mail.Subject = subject;
mail.Priority = MailPriority.High;
if (!String.IsNullOrEmpty(attachmentFilePath))
mail.Attachments.Add(new Attachment(attachmentFilePath));
using (var smtp = new SmtpClient())
{
smtp.UseDefaultCredentials = true;
smtp.Host = host;
smtp.Send(mail);
}
}

谢谢。

使用我们在注释中讨论的库aspNetMX的示例。

aspNetMX.MXValidate mx = new aspNetMX.MXValidate();
// your server infos
mx.SMTPHello = "www.site.com";
mx.SMTPFrom = "info@site.com";
aspNetMX.MXValidateLevel level = mx.Validate("testme@onesite.com", aspNetMX.MXValidateLevel.Mailbox);
if (level == aspNetMX.MXValidateLevel.Mailbox)
{
// Valid email address.
}
else
{
// NOT valid email address.
}

相关内容

最新更新