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

本文关键字:启动 运行 是否 服务器 何检查 检查 SMTP | 更新日期: 2023-09-27 18:22:01

在使用以下代码发送邮件之前,我正在检查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也是我尝试过的。。如果我使用相同的程序中断。

感谢您的帮助。

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

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

  • 可以使用本地SMTP服务器更改设置,以便从投递文件夹中获取它们。很多伪否定,但至少你可以在服务器关闭/过载/启动时发送。我个人更喜欢这样。我用这种方式已经很久了——遗憾的是,MS正在慢慢地退役他们的SMTP服务。如果服务器可以将电子邮件放在文件夹中,然后随着时间的推移发送出去,那就太好了。

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