C# 有没有办法看看System.Net.Mail是否有效

C# 有没有办法看看System.Net.Mail是否有效,c#,asp.net,email,C#,Asp.net,Email,我正在使用System.Net.Mail发送电子邮件,如下所示: MailMessage message = new MailMessage(); message.From = new MailAddress("foo@foo.com"); message.To.Add(new MailAddress("foobar@foobar.com")); message.Subject = "Hello"; message.Body = "This is a nice body.."; Smtp

我正在使用System.Net.Mail发送电子邮件,如下所示:

MailMessage message = new MailMessage();

message.From = new MailAddress("foo@foo.com");
message.To.Add(new MailAddress("foobar@foobar.com"));


message.Subject = "Hello";
message.Body = "This is a nice body..";

SmtpClient client = new SmtpClient();
client.Send(message);
我如何知道电子邮件是否已发送,我是否可以输入if语句来检查它?
然后会是什么样子?

您可能希望将SMTP呼叫包装到
try…catch
块中-这样您就可以轻松捕获可能发生的任何明显的SMTP相关错误:

try
{
   SmtpClient client = new SmtpClient();
   client.Send(message);
}
catch(Exception exc)
{
   // log the error, update your entry - whatever you need to do 
}
这将处理最明显的错误,如

  • 找不到SMTP服务器
  • SMTP服务器没有响应
  • SMTP拒绝您发送(例如,因为您没有提供任何或有效的凭据)
一旦SMTP服务器收到您的邮件,它就不再由您的.NET控制了。。。。除了检查SMTP服务器的日志中是否有错误外,您实际上做不了很多事情

如果您想检查并查看您的SMTP邮件是否已“发送”,还可以将这些代码行添加到应用程序的app.config(或web.config)中,并让.NET将您的邮件放入目录(作为EML文件):



您的邮件现在将存储在<代码> c:\ToM\\邮件\代码>目录中,作为EML文件,您可以查看它们并检查它们是否应该是。

< p>您可以安装和使用服务器——它不发送任何电子邮件,而是记录和显示所有的消息和流量。

< P>我会考虑使用第三方服务。(想到)处理消息。这些通常提供跟踪api,可以查询成功交付。

marc_s关于使用try/catch的说法是正确的

值得一提的是,SMTP没有传递保证,试图计算出实际的传递数字是一门非常不精确的科学

有些软件试图使用一些技术,如图像错误和跟踪链接,但这些技术并不完全可靠

许多服务器会在未知地址的邮件或存在传输错误的情况下以静默方式失败,以避免向垃圾邮件提供商提供太多信息


因此,一旦您发送了电子邮件,如果没有例外,您只能希望它成功。不过,一个有价值的技术是在用户输入电子邮件地址时使用正则表达式来验证电子邮件地址。这有助于避免一些常见的地址问题,以免它们影响邮件传递。

好的,我通常使用try and catch,但有时我会遇到问题即使人们使用IF某事不起作用,那么这个..我认为TryCatch在异常情况下与IfElse同义。
  <system.net>
    <mailSettings>
      <smtp deliveryMethod="SpecifiedPickupDirectory">
        <specifiedPickupDirectory pickupDirectoryLocation="C:\temp\mails"/>
      </smtp>
    </mailSettings>
  </system.net>