使用SmtpClient发送邮件

3

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

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

有人能帮忙吗?


复制此问题。最佳答案在这里https://dev59.com/aG445IYBdhLWcg3w1tgS - Seyed Ali Mahmoody
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";   

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>

4

0
public SmtpClient(
    string host,
    int port
)

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

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


0

这个话题有点偏离主题,但是支持现代电子邮件通过SMTP的最佳实践方法...

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

如果您不熟悉TLS,@gideon提供了一个在GMail中使用TLS的示例,这里有一篇文章支持这种方法:C# ASP.NET通过TLS发送电子邮件


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接