我用这段代码发送电子邮件。但我不明白配置管理器做了什么,以及为什么它给了我例外。这是完整的代码:
MailMessage mail = new MailMessage();
mail.To.Add("makovetskiyd@yahoo.co.uk");
mail.From = new MailAddress("makovetskiyd@yahoo.co.uk");
mail.Subject = "Test Email";
string Body = "Welcome to CodeDigest.Com!!";
mail.Body = Body;
SmtpClient smtp = new SmtpClient();
smtp.Host = ConfigurationManager.AppSettings["SMTP"];
smtp.Send(mail);
我还将最后一行更改为: smtp.DeliveryMethod = SmtpDeliveryMethod.PickupDirectoryFromIis;
smtp.Send(mail);
但它仍会显示错误,说它没有找到IIS服务器......或类似的东西
答案 0 :(得分:3)
您不应将AppSettings用作ConfigurationManager for SMTP配置。首选方法是通过web.config中的<mailSettings>
部分configure SMTP。例如,小型网站的配置可能如下所示:
<system.net>
<mailSettings>
<smtp from="info@example.com">
<network host="localhost" port="25" defaultCredentials="false">
</smtp>
</mailSettings>
</system.net>
这将允许您新建SmtpClient
并只发送消息而无需进一步配置。
答案 1 :(得分:2)
ConfigurationManager提供对客户端应用程序配置文件的访问。
我猜错误的原因是应用程序的配置文件在应用程序设置部分没有SMTP密钥。
<appSettings>
<add key="SMTP" value="..." />
</appSettings>
答案 2 :(得分:1)
原因是配置文件中没有这样的SMTP配置。我想你最好检查一下web.config
。为了使您的应用程序更强大,您需要在配置文件不正确的情况下添加默认主机。
string defaultHost = "www.foo.com";
smtp.Host = ConfigurationManager.AppSettings["SMTP"] ?? defaultHost;