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 服务器。或类似的东西

ConfigurationManager.AppSettings["SMTP"]; null exc

您不应该使用 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;