如何检查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服务器更改设置,以便从投递文件夹中获取它们。很多伪否定,但至少你可以在服务器关闭/过载/启动时发送。我个人更喜欢这样。我用这种方式已经很久了——遗憾的是,MS正在慢慢地退役他们的SMTP服务。如果服务器可以将电子邮件放在文件夹中,然后随着时间的推移发送出去,那就太好了。
在更大的设置中,SMTPO服务器不应该关闭,因为它是负载均衡器后面的集群;)