3

这是我第一次编写发送邮件的程序。我不知道在 SMTP 客户端构造函数中放入什么:

SmtpClient client = new SmtpClient(????);

有人可以帮忙吗?

4

5 回答 5

12

始终查阅文档。SmptClient具有三个构造函数

SmtpClient()
SmtpClient(String)
SmtpClient(String, Int32)

如果您选择最后一个,那么对于 gmail,您的代码将如下所示:

SmtpClient client = new SmtpClient("smtp.gmail.com", 587);

您也可以使用第一个构造函数并设置属性。

SmtpClient smtp = new SmtpClient();
smtp.Port = 587; 
smtp.EnableSsl = true;
smtp.Credentials = new NetworkCredential("<email_from>",  "password");
smtp.Host = "smtp.gmail.com";   
于 2012-08-07T11:03:16.500 回答
4

这是您的host和可选的port

例如:

SmtpClient client = new SmtpClient("mail.domain.com", 123);

有关更多信息,您应该阅读此类的 MSDN 文档:

http://msdn.microsoft.com/en-us/library/system.net.mail.smtpclient.aspx

于 2012-08-07T11:00:28.110 回答
4

您可以按照其他人的建议在代码中指定 SMTP 主机和端口。

但是如果你总是使用相同的主机和端口,使用默认构造函数可能更容易和更灵活,并在应用程序配置文件SmtpClient元素中指定主机和端口:<smtp>

using(var smtpClient = new SmtpClient())
{
    ...
}


<system.net>
    <mailSettings>
        <smtp deliveryMethod="network" from="ben@contoso.com">
            <network 
                 host="localhost"
                 port="25"
                 defaultCredentials="true"
            />
        </smtp>
    </mailSettings>
<system.net>

这样做的一个优点是您可以在开发/测试环境中使用不同的配置,例如下面的配置,这将避免在不更改任何代码的情况下向系统的邮件收件人发送不需要的邮件。

<smtp deliveryMethod="SpecifiedPickupDirectory" from="ben@contoso.com">
  <network host="localhost"/>
  <specifiedPickupDirectory pickupDirectoryLocation="C:\temp\mail\"/>
</smtp>
于 2012-08-07T12:03:55.537 回答
0
public SmtpClient(
    string host,
    int port
)

基本上你需要传递主机名端口号

请阅读有关SmtpClient 构造函数的更多信息

于 2012-08-07T11:04:13.443 回答
0

这有点离题,但支持与通过 SMTP 进行现代电子邮件传递相关的最佳实践方法......

我建议始终使用支持 TLS over SSL 的服务,因为它提供更安全的传输。

如果您不熟悉 TLS,@gideon 提供了一个使用 TLS 和 GMail 的示例,这里有一篇支持这种方法的文章:C# ASP.NET Send Email via TLS

于 2015-08-17T16:55:16.607 回答