ConfigurationManager.AppSettings["SMTP"]; null exc
本文关键字:quot null exc SMTP ConfigurationManager AppSettings | 更新日期: 2023-09-27 17:56:00
我用这个代码来发送电子邮件。但是我不明白该配置管理器的作用,以及为什么它会给我例外。以下是完整的代码:
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);
我还把最后一行改成了这样: 啪。DeliveryMethod = SmtpDeliveryMethod.PickupDirectoryFromIis;
smtp.Send(mail);
但它仍然会显示一个错误,说它没有找到 IIS 服务器。或类似的东西
您不应该使用 AppSettings 和 ConfigurationManager for SMTP 配置。首选方法是通过 web.config 中的<mailSettings>
部分配置 SMTP。例如,小型网站的配置可能如下所示:
<system.net>
<mailSettings>
<smtp from="info@example.com">
<network host="localhost" port="25" defaultCredentials="false">
</smtp>
</mailSettings>
</system.net>
这将允许您重新设置SmtpClient
并仅发送消息而无需进一步配置。
ConfigurationManager 提供对客户端应用程序的配置文件的访问。
我想错误的原因是应用程序的配置文件在应用程序设置部分中没有SMTP密钥。
<appSettings>
<add key="SMTP" value="..." />
</appSettings>
原因是配置文件中没有这样的 SMTP 配置。我想你最好检查一下你的web.config
.为了使您的应用程序更强大,您需要添加一个默认主机,以防配置文件不正确。
string defaultHost = "www.foo.com";
smtp.Host = ConfigurationManager.AppSettings["SMTP"] ?? defaultHost;