【发布时间】:2014-06-17 20:42:17
【问题描述】:
我们有一个 asp.net 应用程序负责发送我们的产品电子邮件。我们想使用应用程序池帐户将经过身份验证的电子邮件发送到我们的交换服务器。
我们的 web.config 如下所示:
<smtp deliveryMethod="Network" from="support@company.com">
<network host="mail.company.com" defaultCredentials="true"/>
</smtp>
基于the msdn docs,我希望它在发送电子邮件时使用应用程序池凭据。但是,在运行时不会尝试进行身份验证。
深入研究 System.Net 代码,看起来 defaultCredentials 选项将导致我们使用 CredentialCache.DefaultCredentials 属性,该属性使用空的用户名和密码填充凭据。因此,这可能是问题的原因。
出于安全考虑,我们不想在 smtp 配置部分中填充明确的用户名和密码。我们根本不想使用开放式中继(这是我们目前正在使用的),因为我们没有办法限制或停止电子邮件。
我们希望应用程序池进行身份验证,因此我们可以在应用程序遇到错误并通过电子邮件向我们发送垃圾邮件的情况下禁用邮箱(这已经发生)。
我们如何配置我们的应用程序以使用应用程序池凭据发送经过身份验证的电子邮件?
【问题讨论】:
-
您是否使用集成身份验证?
-
如果这就是您所要求的,我们不会从用户那里传递凭据,我们已将应用程序池设置为某个域帐户,该帐户使用 IUSR 匿名帐户访问磁盘上的元素。
-
这会返回什么?
System.Security.Principal.WindowsIdentity.GetCurrent().Name
标签: c# asp.net asp.net-mvc smtpclient system.net