【问题标题】:sending mails with SmtpClient使用 SmtpClient 发送邮件
【发布时间】:2012-08-07 10:56:24
【问题描述】:

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

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

有人可以帮忙吗?

【问题讨论】:

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


【解决方案1】:

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

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

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

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

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

SmtpClient smtp = new SmtpClient();
smtp.Port = 587; 
smtp.EnableSsl = true;
smtp.Credentials = new NetworkCredential("<email_from>",  "password");
smtp.Host = "smtp.gmail.com";   

【讨论】:

    【解决方案2】:

    这是您的host 和可选的port

    例如:

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

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

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

    【讨论】:

      【解决方案3】:

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

      但是如果你总是使用相同的主机和端口,那么使用默认的SmtpClient 构造函数并在the &lt;smtp&gt; 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>
      

      【讨论】:

        【解决方案4】:
        public SmtpClient(
            string host,
            int port
        )
        

        基本上你需要传递 host-nameport-number

        请阅读更多关于SmtpClient Constructor

        【讨论】:

          【解决方案5】:

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

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

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2013-12-04
            • 2011-01-29
            • 1970-01-01
            • 1970-01-01
            • 2014-08-09
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多