System.Net.Mail无法加载或初始化所请求的服务提供程序

时间:2014-04-04 01:51:37

标签: c# .net sockets exception smtp

尝试使用System.Net.Mail.SmtpClient发送电子邮件时出现以下异常:

System.Net.Mail.SmtpException: The SMTP host was not found.

内部异常:

System.Net.Sockets.SocketException: The requested service provider could not be loaded or initialized

我的电子邮件发送代码非常简单:

private async Task SendEmail(string to, string subject, string email)
{
    MailMessage msg = null;
    SmtpClient smtp = null;
    try
    {
        var set = Settings.Default;
        msg = new MailMessage(set.EmailFrom, to, subject, email);
        smtp = new SmtpClient(set.SMTPServer, set.Port)
        {
            EnableSsl = true,
            Credentials = new NetworkCredential(set.EmailUsername, set.EmailPassword),
            Timeout = 20000
        };
        await smtp.SendMailAsync(msg);
    }
    catch (Exception e)
    {
        _log.Error("Error on sending email", e);
        throw;
    }
    finally
    {
        if (msg != null) msg.Dispose();
        if (smtp != null) smtp.Dispose();
    }
}

每次都不会发生此错误,而是经常发生。我试图谷歌它但没有找到任何有用的东西。当我收到此错误时,互联网连接似乎很稳定。

为什么会发生这种情况的任何想法?

1 个答案:

答案 0 :(得分:2)

不发布此评论的道歉,我没有足够的代表。

我使用非常类似的实现来运行一个进程,我遇到了同样的事情。尝试减少SMTP超时,如果有太多请求尚未放弃现有连接,则会拒绝新连接。这有助于我的具体实施。