作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我在 .net 4.5 中有一个 C# wcf Windows 服务,它每天向大约 1000 个不同的客户发送电子邮件。我想尝试使用我在 SO 上找到的这段代码异步发送电子邮件,但我应该如何包装它以捕获异常?
public async Task SendAsync(string subject, string body, string recipient)
{
var mailMessage = new MailMessage("me@example.com", recipient, subject, body);
mailMessage.IsBodyHtml = true;
using(var client = new SmtpClient("mysmtpserver"))
{
try
{
await client.SendMailAsync(mailMessage);
}
catch (Exception ex)
{
// Log here
}
}
}
我期待无效电子邮件地址和服务器超时的异常。
我应该将 await 调用包装在 try-catch 中吗?不确定这是否有效。
此外,放置遍历所有邮件地址的 foreach 循环的最佳位置在哪里?
谢谢。
最佳答案
Should I just wrap the await Call in a try-catch? Not sure this will work.
是的,await
传播异常,这会起作用。当然,许多邮件投递失败发生在邮件离开您的服务器之后,您会被退回,甚至什么也得不到。无论您如何发送邮件,都无法检测到这一点。
Also where is the best place to put the foreach loop that runs through all mail addresses?
不太清楚你的意思。围绕对 SendAsync
的调用放置循环?它还能去哪里?我可能误解了。
关于c# - 如何在 SendMailAsync 方法中捕获异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33196375/
我是一名优秀的程序员,十分优秀!