【发布时间】:2015-12-16 16:19:02
【问题描述】:
我正在创建应用程序并返回错误。这是 web.config 文件中配置 SMTP 连接的一部分:
<system.net>
<mailSettings>
<smtp>
<network host="smtp.gmail.com"
port="587"
userName="mymail@gmail.com"
password="mypassword"
enableSsl="true"
defaultCredentials="false"/>
</smtp>
</mailSettings>
</system.net>
以下是 Helpers 控制器中的代码:
namespace Subscription.Helpers
{
public static class MailHelper
{
private static SmtpClient _smtpClient;
static MailHelper()
{
_smtpClient = new SmtpClient();
}
public static void SendEmail(List<string> recipientAddress, string subject, string news)
{
using (MailMessage mail = new MailMessage())
{
mail.From = new MailAddress("mymail@gmail.com", "Google.com", Encoding.UTF8);
foreach(string address in recipientAddress)
{
mail.Bcc.Add(new MailAddress(address));
}
mail.Subject = subject;
mail.Body = news;
mail.SubjectEncoding = Encoding.UTF8;
mail.BodyEncoding = Encoding.UTF8;
mail.Priority = MailPriority.High;
_smtpClient.Send(mail);
}
}
}
}
当我想向数据库中的所有地址发送电子邮件时,它会返回未处理的异常并进行通信:“未指定 SMTP 主机”和行“_smtpClient.Send(mail);”在源错误中。我做错了什么?
【问题讨论】:
-
SmtpClient肯定需要直接分配给它的主机详细信息:_smtpClient.Host = "smtp.gmail.com"和_smtpClient.Port = 587。如果我弄错了,请有人纠正我,但我之前没有看到SmtpClient从web.config读取它的设置。 -
不,这就是 web.config 部分的用途。 SmtpClient 应该从那里读取它。问题是
<smtp>标记上缺少属性和/或添加到其他 Web.config 的 OP,而不是站点根目录中的属性。 -
感谢您的澄清,我没有意识到它会这样做。
标签: c# asp.net-mvc-4 smtp gmail