c# - 如何忽略发送电子邮件方法并继续执行?

标签 c# .net email

我正在使用 C# 发送电子邮件。当互联网可用时它工作正常,但当互联网连接不可用时它会一次又一次返回异常消息并停止执行。如果连接不可用,如何忽略发送电子邮件并继续执行, 或任何其他合适的方法来做到这一点..

while (true)
{
    try
    {
        Thread.Sleep(50);
        MailMessage mail = new MailMessage();
        SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com");
        mail.From = new MailAddress("mymail");
        mail.To.Add("mymail");
        mail.Subject = "data - 1";
        mail.Body = "find attachement";
        System.Net.Mail.Attachment attachment;
        attachment = new System.Net.Mail.Attachment(filepath);
        mail.Attachments.Add(attachment);
        SmtpServer.Port = 587;
        SmtpServer.Credentials = new System.Net.NetworkCredential("myemail", "mypassword");
        SmtpServer.EnableSsl = true;
        SmtpServer.Send(mail);
    }
    catch (Exception)
    {
        MessageBox.Show("Internet Connection is not found");
    }
}  

最佳答案

任何依赖于重复尝试的解决方案都可能最终无限循环。

您的代码正在同步发送电子邮件,为什么不send asynchronously使用pickup directory

这会将电子邮件放入 SMTP 接收目录,并且 SMTP 服务器将通过在可配置的时间段内重试来处理暂时的网络问题。

关于c# - 如何忽略发送电子邮件方法并继续执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33390751/

相关文章:

c# - 与 C# 中的 Openfiledialog 控件相关的问题

c# - 为什么我的数据类型在分配时从大端转换回小端?

c# - 为什么我不能在此三元运算中将 int 转换为字符串

c# mvc 3, Action 重载?

c# - protobuf.net 意外的子类型

c# - 查找添加到 TableLayoutPanel 的控件的行索引

android - 如何在 Android 中发送包含纯文本和 HTML 的多部分电子邮件?

html - 测试批量电子邮件脚本的最佳方法

git - 更改链接到我的 ssh 公钥的电子邮件会有什么后果?

javascript - C#序列化为JS对象而不引用一些值