2012-08-07 82 views
2

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

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

任何人都可以帮忙吗?

+0

重复这个问题。解决方法1:这里是http://stackoverflow.com/questions/4677258/send-email-using-system-net-mail-through-gmail – 2017-04-08 07:57:55

回答

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"; 
0
public SmtpClient(
    string host, 
    int port 
) 

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

请阅读更多关于SmtpClient Constructor

2

您可以指定SMTP主机和像其他人所建议的那样使用代码。

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

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


<system.net> 
    <mailSettings> 
     <smtp deliveryMethod="network" from="[email protected]"> 
      <network 
       host="localhost" 
       port="25" 
       defaultCredentials="true" 
      /> 
     </smtp> 
    </mailSettings> 
<system.net> 

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

<smtp deliveryMethod="SpecifiedPickupDirectory" from="[email protected]"> 
    <network host="localhost"/> 
    <specifiedPickupDirectory pickupDirectoryLocation="C:\temp\mail\"/> 
</smtp> 
0

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

我建议总是使用支持TLS通过SSL,因为它提供了更多的服务安全传输。

如果你不熟悉TLS,@gideon提供为Gmail TLS的一个例子,这里是支持这种做法的文章:C# ASP.NET Send Email via TLS

相关问题