bad*_*ndu 5 c# asp.net asp.net-mvc system.net smtpclient
我们有一个 asp.net 应用程序,负责发送我们的产品电子邮件。我们想使用应用程序池帐户将经过身份验证的电子邮件发送到我们的交换服务器。
我们的 web.config 如下所示:
<smtp deliveryMethod="Network" from="support@company.com">
<network host="mail.company.com" defaultCredentials="true"/>
</smtp>
Run Code Online (Sandbox Code Playgroud)
根据msdn docs,我希望在发送电子邮件时使用应用程序池凭据。但是,在运行时不会尝试进行身份验证。
深入研究 System.Net 代码,看起来 defaultCredentials 选项会导致我们使用 CredentialCache.DefaultCredentials 属性,该属性使用空用户名和密码填充凭据。因此,这可能是问题的原因。
出于安全考虑,我们不想在 smtp 配置部分中填充明确的用户名和密码。我们根本不想使用开放中继(这是我们目前正在使用的),因为我们没有办法限制或停止电子邮件。
我们希望应用程序池进行身份验证,因此我们可以在应用程序遇到错误并用电子邮件向我们发送垃圾邮件的情况下禁用邮箱(这已经发生了)。
我们如何配置我们的应用程序以使用应用程序池凭据发送经过身份验证的电子邮件?
在发送电子邮件的代码中,执行以下操作...
SmtpClient client = new SmtpClient();
client.UseDefaultCredentials = false;
client.Credentials=new NetworkCredential("myusername","mypassword");
Run Code Online (Sandbox Code Playgroud)
这将使用指定的用户名和密码。如果需要,您可以从加密文件或 Web 服务或其他安全位置检索用户名和密码。
另一种选择是加密您的配置文件。
| 归档时间: |
|
| 查看次数: |
1671 次 |
| 最近记录: |