用SmtpClient发送邮件

时间:2012-08-07 10:56:24

标签: asp.net .net asp.net-mvc sendmail

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

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

有人可以帮忙吗?

5 个答案:

答案 0 :(得分:11)

请务必查阅文档。 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";   

答案 1 :(得分:4)

这是您的host和可选port

例如:

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

有关详细信息,请阅读此类的MSDN文档:

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

答案 2 :(得分:3)

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

但是如果你总是使用相同的主机和端口,那么使用默认的SmtpClient构造函数可能更容易也更灵活,并在the <smtp> element of your application configuration file中指定主机和端口:

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>

答案 3 :(得分:0)

public SmtpClient(
    string host,
    int port
)

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

请详细了解SmtpClient Constructor

答案 4 :(得分:0)

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

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

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