【发布时间】:2010-10-02 13:36:45
【问题描述】:
有没有办法在 C# 代码中发送电子邮件而无需知道服务器上的 SMTP 服务器配置等,或者设置任何这些东西?
我正在开发的代码将部署到实时服务器,但我对配置一无所知,所以我无法预测 SMTP 服务器会是什么。
【问题讨论】:
标签: c# email configuration smtp
有没有办法在 C# 代码中发送电子邮件而无需知道服务器上的 SMTP 服务器配置等,或者设置任何这些东西?
我正在开发的代码将部署到实时服务器,但我对配置一无所知,所以我无法预测 SMTP 服务器会是什么。
【问题讨论】:
标签: c# email configuration smtp
是的,您可以使用 SMTP4Dev 之类的工具来“发送”电子邮件,而根本不需要 SMTP 服务器。我经常使用它来进行测试,以确保我实际上不会错误地向真实用户发送电子邮件。
【讨论】:
如果您的 SMTP 配置正确,请执行以下操作:
MailMessage mail = new MailMessage();
mail.To = "To";
mail.From = "From";
mail.Subject = "Subject";
mail.Body = "Body";
SmtpMail.SmtpServer = "localhost";
SmtpMail.Send(mail);
【讨论】:
从谷歌试试这个
【讨论】:
作为替代方案:如果您不想依赖服务器配置并以编程方式进行,您可以随时这样做:
MailMessage mail = new MailMessage() {
To = "someone@somewhere",
From = "someone@somewhere",
Subject = "My Subject",
Body = "My message"
};
SmtpClient client = new SmtpClient("SMTP Server Address");
// Naturally you change the "SMTP Server Address" to the
// actual SMTP server address
client.Send(mail);
但我建议你把它放在 web.config 文件中(也可以通过 ASP.NET Web 配置工具进行配置)。
【讨论】:
将此添加到您的 web.config (MSDN reference here):
<system.net>
<mailSettings>
<smtp deliveryMethod="Network" from="jdoe@example.com">
<network host="localhost" port="25" />
</smtp>
</mailSettings>
</system.net>
使用 SmtpClient 而不指定配置设置将使用 web.config 中的值:
MailMessage msg = new MailMessage(...);
// build message contents
SmtpClient client = new SmtpClient();
client.Send(msg);
【讨论】:
最好的答案是,如果你在直播之前什么都不知道,你能把所有的设置都移到 web.config 中吗?这将允许配置直到最后一分钟。下面是一些转储到 web.config 文件中的代码。我会质疑为什么您无法访问此信息
<system.net>
<mailSettings>
<smtp from="you@yourdomain.com">
<network host="SMTP SERVER ADDRESS" port="25"
userName="USERNAME" password="PASSWORD">
</smtp>
</mailSettings>
</system.net>
【讨论】: