繁体   English   中英

如何使用Azure和Github保护SMTP信息?

[英]How to secure smtp info with Azure and Github?

我有一个小型网站,该网站上有一个“与我联系”页面,为此页面我使用System.Net.Mail并且遵循了本教程

我现在的问题是我将网站托管在Azure上,并将Github用作源代码控制和部署。

问题当然是我的所有代码都将在Github上公开,而且凭据是公开的。

如何使用Azure从公众获取此信息? 我一直在研究“应用程序设置”部分,但不确定100%如何正确处理。

  <system.net>
    <mailSettings>
      <smtp from="mail@outlook.com">
        <network host="smtp-mail.outlook.com"
                 port="587"
                 userName="mail@outlook.com"
                 password="notarealpassword"
                 enableSsl="true" />
      </smtp>
    </mailSettings>
  </system.net>

因此,最简单的方法是使用“应用程序设置”(就像您说的那样)。 您将创建多个应用程序设置,例如username = mail@outlook.com ,这些设置将成为托管WebApp的VM上的环境变量。 您可以按照自己喜欢的任何方式通过变量名来获取值或那些环境变量。

我正在这样做:

Environment.GetEnvironmentVariable("StorageConnectionString")

我的解决方案基于4c74356b41的答案中的建议。

步骤1:将密钥添加到您的Web.config文件

将该值留空。

  <appSettings>
    <add key="webpages:Version" value="3.0.0.0" />
    <add key="webpages:Enabled" value="false" />
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />

    <add key="EmailAccount" value=""/>
    <add key="EmailPassword" value=""/>
  </appSettings>

步骤2:使用代码中的键

使用ConfigurationManager您可以调用AppSettings并根据键名检索值。

       using (var smtp = new SmtpClient())
        {
            var credential = new NetworkCredential
            {
                UserName = ConfigurationManager.AppSettings["EmailAccount"],  
                Password = ConfigurationManager.AppSettings["EmailPassword"]  
            };
            smtp.Credentials = credential;
            smtp.Host = "smtp-mail.outlook.com";
            smtp.Port = 587;
            smtp.EnableSsl = true;
            await smtp.SendMailAsync(message);
            return RedirectToAction("Sent");
        }

步骤3:在Azure的应用程序设置中添加您的键值

在您的Web应用程序中,转到“设置”下的“应用程序设置”,然后添加键/值的

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM