c# - 在 web.config 文件中存储电子邮件凭据
问题描述
我正在尝试将电子邮件凭据从Startup.cs
一个文件存储到另一个web.config
文件。
var value = ConfigurationManager.AppSettings["appSettings"];
SmtpClient mySmtpClient = new SmtpClient("smtp.gmail.com");
mySmtpClient.UseDefaultCredentials = false;
System.Net.NetworkCredential basicAuthenticationInfo = new System.Net.NetworkCredential("service@gmail.com", "123456");
mySmtpClient.Credentials = basicAuthenticationInfo;
mySmtpClient.EnableSsl = true;
mySmtpClient.Port = 587;
MailAddress from = new MailAddress("service@gmail.com", "ActiveDirectoryInformation");
MailAddress to = new MailAddress("test@gmail.com");
//MailAddress to = new MailAddress("it@sarajevoosiguranje.ba");
System.Net.Mail.MailMessage myMail = new System.Net.Mail.MailMessage(from, to);
myMail.Subject = "ActiveDirectory";
myMail.SubjectEncoding = System.Text.Encoding.UTF8;
// set body-message and encoding
myMail.Body = @"Ukupno novih korisnika:" + noviKorisnika + "<br>" +
@"Ukupno izmjenjenih korisnika: " + izmjenjenihKorisnika;
myMail.BodyEncoding = System.Text.Encoding.UTF8;
// text or html
myMail.IsBodyHtml = true;
我在我的app.config
文件中创建
<appSettings>
<add key="webpages:Version" value="1.0.0.0" />
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
<add key="smtpServer" value="smtp.net" />
<add key="Username" value="service@gmail.com"/>
<add key="Password" value="test123456abc"/>
<add key="EnableSsl" value = "true"/>
<add key="smtpPort" value="587" />
<add key="from" value="service@gmail.com" />
<add key="to" value ="test@gmail.com"></add>
</appSettings>
我这样做的原因是我想实时发布这个应用程序,也许将来当我更改sender
或receiver
发送电子邮件地址时,我不想再次编译应用程序并发布它。
将所有内容存储在 app.config 中并从那里读取是一种简单的方法。
任何建议如何做到这一点?
解决方案
我不确定这是否适合您,但我能够将 SMTP 信息存储在我的旧 C# 应用程序之一的 app.config 文件中。
但是,To: 地址没有作为凭据的一部分存储,因此我将这些信息存储在本地 SQLite 文件中。
要检索设置,您只需初始化SmtpClient
将从本地配置文件读取的对象。
希望这可以帮助。
public static void WriteDefaultSMTPSettingsToConfigurationFile()
{
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
MailSettingsSectionGroup mailSettingsSectionGroup = (MailSettingsSectionGroup)config.GetSectionGroup("system.net/mailSettings");
SmtpSection smtpSection = mailSettingsSectionGroup.Smtp;
if (!smtpSection.ElementInformation.IsPresent)
{
smtpSection.DeliveryFormat = SmtpDeliveryFormat.International;
smtpSection.DeliveryMethod = SmtpDeliveryMethod.Network;
SmtpNetworkElement smtpNetworkElement = smtpSection.Network;
smtpNetworkElement.Host = "localhost";
smtpNetworkElement.Port = 465;
smtpNetworkElement.EnableSsl = true;
smtpNetworkElement.UserName = "username";
smtpNetworkElement.Password = "password";
config.Save();
ConfigurationManager.RefreshSection("system.net/mailSettings");
}
}
推荐阅读
- c++ - 为什么在测量 OpenMP 并行化 for 循环和编译器优化的执行时间时 std::chrono 不起作用?
- haskell - 现实世界应用程序的 Haskell 解释模式
- css - 如何将 -webkit-clip-path 设置为属性?
- javascript - 如何验证电子邮件是否存在于两个单独的猫鼬文档中?
- katalon-studio - 如何在 Katalon Studio 中使用 assert 语句?
- karate - 在空手道测试的路径中使用逗号
- c# - 在运行时使图片框在屏幕上移动
- c++ - 我有四个错误来自三行关于未定义的结构中的数组
- azure - 如何使用 ansible 在 azure 中泛化 Windows VM
- c# - C#如何从Form2访问Form1控件并在最小化时不受影响