调用 SmtpClient(host,0) 等同于调用 SmtpClient(host)
Is calling SmtpClient(host,0) equivalent to calling SmtpClient(host)
我们正在开发一个使用 SMTP 的应用程序;主机在我们的数据库中配置,我们希望允许指定一个可选端口(以便将来可以使用 SSL)。
最简单的方法似乎是在从数据库读取数据时设置 port==0
,但我需要确认 .NET 会将其视为与根本不指定端口完全相同的方式吗?
https://msdn.microsoft.com/en-us/library/67w4as51(v=vs.110).aspx
根据 SmtpClient(string, int)
constructor documentation:
If port is zero, Port is initialized using the settings in the application or machine configuration files.
正如您从 SmtpNetworkElement
configuration element documentation 中看到的,这默认为端口 25,与仅使用 host
参数调用构造函数时完全相同。
如果您不想这样,很简单:
SmtpClient smtpClient;
if (yourConfiguration.SmtpPort.HasValue)
{
smtpClient = new SmtpClient(yourConfiguration.SmtpHost, yourConfiguration.SmtpPort.Value);
}
else
{
smtpClient = new SmtpClient(yourConfiguration.SmtpHost);
}
另一种确认方法是在link (SmtpClient source code)(第 160 行)
if(port == 0)
port = defaultPort;//25
我们正在开发一个使用 SMTP 的应用程序;主机在我们的数据库中配置,我们希望允许指定一个可选端口(以便将来可以使用 SSL)。
最简单的方法似乎是在从数据库读取数据时设置 port==0
,但我需要确认 .NET 会将其视为与根本不指定端口完全相同的方式吗?
https://msdn.microsoft.com/en-us/library/67w4as51(v=vs.110).aspx
根据 SmtpClient(string, int)
constructor documentation:
If port is zero, Port is initialized using the settings in the application or machine configuration files.
正如您从 SmtpNetworkElement
configuration element documentation 中看到的,这默认为端口 25,与仅使用 host
参数调用构造函数时完全相同。
如果您不想这样,很简单:
SmtpClient smtpClient;
if (yourConfiguration.SmtpPort.HasValue)
{
smtpClient = new SmtpClient(yourConfiguration.SmtpHost, yourConfiguration.SmtpPort.Value);
}
else
{
smtpClient = new SmtpClient(yourConfiguration.SmtpHost);
}
另一种确认方法是在link (SmtpClient source code)(第 160 行)
if(port == 0)
port = defaultPort;//25