从Windows中的系统配置中获取SMTP服务器和主机

本文关键字:服务器 SMTP 主机 系统配置 Windows 获取 | 更新日期: 2023-09-27 18:29:47

在Windows中,您可以从控制面板配置邮件设置。我想知道的是这些信息存储在哪里?我需要写一个可以发送电子邮件的应用程序,默认情况下我想使用这些设置。我假设如果我使用SmtpClient的无参数构造函数,它会读取它们,但是当我运行以下代码时:

        var smtp = new SmtpClient();
        var host = smtp.Host;
        var port = smtp.Port;
        Console.WriteLine("{0}:{1}", host,port);

我得到的主机为null(尽管端口是25。)如果我通过它发送消息,它会抛出一个异常,说"host not specified"。

我在哪里可以获得这些预先配置的数据?

从Windows中的系统配置中获取SMTP服务器和主机

在检查其值之前,需要先设置属性,否则它将为null。但是,默认情况下,端口为25。这就是为什么您看到25表示端口,尽管没有指定端口。以下是SmtpClient对象的Host属性的定义。

公共字符串主机{set;get;}System.Net.Mail.SmtpClient的成员摘要:获取或设置用于SMTP事务的主机的名称或IP地址。退货:一个系统。String,包含用于SMTP事务的计算机的名称或IP地址。

试试这个。。。

var smtp=新SmtpClient();smtp。主机="localhost"//您的邮件服务器主机名或ip地址var主机=smtp。主办var端口=smtp。港口城市Console.WriteLine("{0}:{1}",主机,端口);

通常您需要SMTP服务器名称,并将此信息作为程序中配置的一部分。您可以让用户从outlook设置中获取此信息。我想你已经知道了。无论出于何种原因,您希望动态获取SMTP服务器名称,此活动都可能被视为黑客攻击,并可能给用户带来安全问题。如果某些程序自动使用outlook中预先配置的邮件服务器发送我们的一些电子邮件,你能想象一下吗?

话虽如此,实现这一点的一种方法是在获取潜在SMTP服务器名称列表的过程中使用第三方端口扫描仪,并使用helo命令验证SMTP的存在。这将有助于确定哪个ip是SMTP服务器。