我有下面这段代码如何在发送邮件时捕获特定的异常?
try
{
if (!bDebug)
smtp.Send(m);
}
catch (Exception e)
{
wl("Meldingen kunne ikke sendes til en eller flere mottakere.", ConsoleColor.Red);
wl(e.Message, ConsoleColor.DarkRed);
using (var errorfile = System.IO.File.CreateText("error-" + DateTime.Now.Ticks + ".txt"))
{
errorfile.WriteLine(e.StackTrace);
if (e.GetType() == typeof(SmtpFailedRecipientException))
{
var se = (SmtpFailedRecipientException) e;
errorfile.WriteLine(se.FailedRecipient);
}
errorfile.WriteLine(e.ToString());
}
}
哪里wl
是与颜色写到控制台的快捷方式,并在第一行文字说“的消息无法发送给一个或多个收件人。
以前我只抓到SmtpFailedRecipientException
,但是当它在其他一些步骤中开始失败时,我在那里推了通用的Exception
所以我想知道的部分是将Exception对象强制转换为更具体的对象以获得FailedRecipient
财产。可以/应该以另一种更合适的方式完成?看起来有点笨重。 ..
我结束了关闭本机发送邮件,并使用山魈,而不是开始;) ''wl''只是一个控制台日志包装。 – 2015-08-20 10:29:24