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

C# System.Net.Mail无法加载或初始化请求的服务提供程序,c#,.net,sockets,exception,smtp,C#,.net,Sockets,Exception,Smtp,尝试使用System.Net.Mail.SmtpClient发送电子邮件时出现以下异常: System.Net.Mail.SmtpException:找不到SMTP主机。 内部异常: System.Net.Sockets.SocketException:无法加载或初始化请求的服务提供程序 我的电子邮件发送代码相当简单: private async Task SendEmail(string to, string subject, string email) { MailMessage m

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

System.Net.Mail.SmtpException:找不到SMTP主机。

内部异常:

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

我的电子邮件发送代码相当简单:

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();
    }
}
这种错误不是每次都发生,而是经常发生。我试着用谷歌搜索,但没有发现任何有用的东西。当我出现此错误时,internet连接似乎是稳定的


知道为什么会发生这种情况吗?

很抱歉没有将此作为评论发布,我没有足够的代表


我使用与之非常相似的实现运行一个流程,我也遇到过同样的情况。尝试减少SMTP超时,如果有太多的请求尚未释放其现有连接,则新连接将被拒绝。这对我的具体实现很有帮助。

很奇怪,因为SmtpClient.Dispose()应该关闭连接,并且在发送前一封电子邮件之前,我不会发送新电子邮件,因此一次最多只能有一个连接。无论如何,谢谢你的建议,我会尝试(现在不能尝试,它在另一台计算机上)。我的实现没有设置为运行异步,所以可能工作中还有其他问题。不管怎样,我希望这有帮助。只是好奇,但你把它归结为什么?从最初的代码示例开始的20秒似乎非常高。您是否在邮件中发送了较大的附件?不,电子邮件很小,我设置了此超时以避免可能出现的临时网络问题。我把时间缩短到10秒,但结果是一样的。你认为价格太高了吗?考虑到电子邮件只包含几行纯文本,您建议的合理值是多少?我也发送简单的文本电子邮件,我的超时设置为500(半秒)。也许这对你有用。