[英]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的答案中的建议。
将该值留空。
<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>
使用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");
}
在您的Web应用程序中,转到“设置”下的“应用程序设置”,然后添加键/值的
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.