我有一个在用户注册后发送电子邮件的服务。每隔一段时间,用户就会联系支持人员提示他们没有收到电子邮件,所以我列出了可能的问题,其中之一是 smtp 无法发送电子邮件,我偶尔会注意到这一点将单步执行代码。我想编写一个简单的循环,尝试在发送失败时重新发送几次电子邮件,但我不确定该怎么做。我将不胜感激有关该主题的任何建议。
public void MusicDownloadEmail(string email)
{
try
{
var smtp = new SmtpClient();
var mail = new MailMessage();
const string mailBody = "Body text";
mail.To.Add(email);
mail.Subject = "Mail subject";
mail.Body = mailBody;
mail.IsBodyHtml = true;
smtp.Send(mail);
}
catch (Exception ex)
{
var exception = ex.Message.ToString();
//Other code for saving exception message to a log.
}
}
最佳答案
像这样的东西应该可以解决问题:
public void MusicDownloadEmail(string email)
{
int tryAgain = 10;
bool failed = false;
do
{
try
{
failed = false;
var smtp = new SmtpClient();
var mail = new MailMessage();
const string mailBody = "Body text";
mail.To.Add(email);
mail.Subject = "Mail subject";
mail.Body = mailBody;
mail.IsBodyHtml = true;
smtp.Send(mail);
}
catch (Exception ex) // I would avoid catching all exceptions equally, but ymmv
{
failed = true;
tryAgain--;
var exception = ex.Message.ToString();
//Other code for saving exception message to a log.
}
}while(failed && tryAgain !=0)
}
关于c# - 发送失败时重新发送 smtp 电子邮件的循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24292574/