IIS SMTP和.NET应用程序

时间:2013-09-05 18:45:33

标签: asp.net .net iis smtp

IIS SMTP设置似乎非常混乱,也是一个常见问题。我环顾四周,似乎没有找到有这个问题的人,但希望我们能在一起解决问题。

我正在尝试设置一个WCF服务,该服务将使用其中的数据库中的某些详细信息触发电子邮件。听起来很简单吧......?我看到的所有在线参考都在web.config文件中设置了SMTP配置,如:

 <system.net>
    <mailSettings>
        <smtp deliveryMethod="Network" from="mailer@dla.mil">
            <network host="smtp.gmail.com" port="587" enableSsl="true" defaultCredentials="false" userName="mygmailaccount" password="mypassword" />
        </smtp>
    </mailSettings>
 </system.net>

问题是我没有明文密码,我的网络服务器需要验证。所以我在IIS管理器中发现你可以在那里设置凭证,如:

iis image

但是,我无法弄清楚如何让服务获取这些设置。我在这里错过了什么吗?这甚至可能吗?如果没有,任何人都对更好的解决方案有任何想法?

谢谢!

1 个答案:

答案 0 :(得分:2)

首先,IIS SMTP服务与.NET <smtp>邮件设置无关。它只是一个服务器,除非您将应用程序配置为通过服务发送邮件,否则不与.NET交互。所以请忽略它。

如果您希望应用程序通过GMail的SMTP服务器发送电子邮件,则需要为Web应用程序配置应用程序专用密码。

您可以在此处了解如何执行此操作:

  

Sign in using application-specific passwords

基本上,您专门为您的应用程序创建了一个密码。您可以为不同的应用程序配置多个密码,以便与同一个GMail帐户一起使用。我们的想法是,如果您的一个或多个应用程序遭到入侵,那么您可以轻松撤销受感染的应用程序,而无需在多个应用程序之间重置密码。

您输入应用程序的名称(例如“我的Web应用程序”),然后单击“生成密码”按钮。这将生成一个特定于您的应用程序的随机密码。将密码复制并粘贴到password配置元素的smtp/network属性中,然后让您的应用程序发送电子邮件。

关于无法以纯文本格式存储Gmail密码,您可以使用此处记录的受保护配置功能:

  

Encrypting Configuration Information Using Protected Configuration

有些部分无法加密,如果smtp/network设置是其中之一,则只需将密码移至<appSettings>键/值对并加密该部分即可。这只是意味着您的应用需要额外的步骤来读取密码并在使用System.Net.Mail.SmtpClient时设置密码。