如何检查SMTP服务器已启动并正在运行

时间:2014-09-16 16:56:58

标签: c# smtp

我目前正在检查SMTP服务器已启动并正在运行,然后使用以下代码发送邮件:

 public static bool ValidateSMTPServer()
        {
            bool valid = false;
            System.Net.Sockets.TcpClient smtpTest = new System.Net.Sockets.TcpClient();
            try
            {
                smtpTest.Connect(ConfigurationManager.AppSettings["SMTPServerName"], Convert.ToInt32(ConfigurationManager.AppSettings["PortNumber"]));
                return true;

            }
            catch
            {
                return valid;
            }
            finally
            {
                smtpTest.Close();
            }

        }

但问题是,如果服务器没有运行,则需要大约25秒才能响应...这会降低我的页面性能。我在发送邮件前点击按钮执行此操作。 有没有比这更好的方法?或者我可以对现有代码进行一些更改。

如果服务器没有运行,它去捕获部分,我让我的标志返回false,这意味着smtp已关闭..有没有办法,我可以得到服务器没有运行的状态代码... SMTPException是我也试过..如果我使用相同的程序休息。

感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

  • 您可以检查后台 - 并将其存储在静态变量中。在一个循环中进行,你可以避免等待。

  • 可以使用本地SMTP服务器更改设置,以从drop文件夹中获取它们。很多伪否定但至少你可以在服务器关闭/重载/启动时发送。我个人更喜欢这个。我用这种方式已经很久了 - 遗憾的是MS慢慢退休他们的SMTP服务。如果服务器可以只删除文件夹中的电子邮件然后随着时间的推移发送它,那就太棒了。

在较大的设置中,SMTPO服务器不应该关闭,因为它是负载均衡器后面的集群;)