Testing SMTP server is running via C#(测试 SMTP 服务器正在通过 C# 运行)
问题描述
如何在不发送消息的情况下通过 C# 测试 SMTP 是否启动并运行.
How can I test SMTP is up and running via C# without sending a message.
我当然可以试试:
try{
// send email to "nonsense@example.com"
}
catch
{
// log "smtp is down"
}
必须有一个更整洁的方法来做到这一点.
There must be a more tidy way to do this.
推荐答案
你可以试试对您的服务器说 EHLO
并查看它是否以 250 OK
响应.当然这个测试并不能保证你以后一定能成功发送邮件,但这是一个很好的迹象.
You can try saying EHLO
to your server and see if it responds with 250 OK
. Of course this test doesn't guarantee you that you will succeed sending the mail later, but it is a good indication.
这是一个示例:
class Program
{
static void Main(string[] args)
{
using (var client = new TcpClient())
{
var server = "smtp.gmail.com";
var port = 465;
client.Connect(server, port);
// As GMail requires SSL we should use SslStream
// If your SMTP server doesn't support SSL you can
// work directly with the underlying stream
using (var stream = client.GetStream())
using (var sslStream = new SslStream(stream))
{
sslStream.AuthenticateAsClient(server);
using (var writer = new StreamWriter(sslStream))
using (var reader = new StreamReader(sslStream))
{
writer.WriteLine("EHLO " + server);
writer.Flush();
Console.WriteLine(reader.ReadLine());
// GMail responds with: 220 mx.google.com ESMTP
}
}
}
}
}
这是代码列表期待.
这篇关于测试 SMTP 服务器正在通过 C# 运行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:测试 SMTP 服务器正在通过 C# 运行
基础教程推荐
- rabbitmq 的 REST API 2022-01-01
- 有没有办法忽略 2GB 文件上传的 maxRequestLength 限制? 2022-01-01
- 为什么Flurl.Http DownloadFileAsync/Http客户端GetAsync需要 2022-09-30
- MS Visual Studio .NET 的替代品 2022-01-01
- 如何激活MC67中的红灯 2022-01-01
- 如何在 IDE 中获取 Xamarin Studio C# 输出? 2022-01-01
- 将 Office 安装到 Windows 容器 (servercore:ltsc2019) 失败,错误代码为 17002 2022-01-01
- 将 XML 转换为通用列表 2022-01-01
- c# Math.Sqrt 实现 2022-01-01
- SSE 浮点算术是否可重现? 2022-01-01