Хранить учетные данные электронной почты в файле web.config - PullRequest
1 голос
/ 08 мая 2020

Я пытаюсь сохранить учетные данные электронной почты из файла 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>

Причина, по которой я это делаю, заключается в том, что я хочу опубликовать sh это приложение вживую и, возможно, в будущем когда я меняю адрес электронной почты sender или receiver, я не хочу снова компилировать приложение и публиковать sh его.

Это простой способ сохранить все в app.config и прочитать оттуда.

Есть предложения, как это сделать?

Ответы [ 2 ]

0 голосов
/ 08 мая 2020

Как я понял, вы хотите хранить информацию в файле App.config, что довольно просто.

Шаг 1

Добавьте ссылку на System.Configuration.dll в свой проект, если у вас ее еще нет.

Проект> myAwsomeProject> Ссылки> Добавить ссылку> Найти систему .Configuration.dll

(или что-то в этом роде) и добавьте его в свой проект.

Шаг 2

импортируйте System.Configuration.dll, используя:

using System.Configuration;

Затем создайте функцию или напишите код на третьем шаге в main ();

Шаг 3

Создайте экземпляр класса Configuration, который ссылается на ваш файл App.config

Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);

Шаг 4

Используйте следующий синтаксис для чтения из файла App.config

config.AppSettings.Settings["mykey"].Value

, в котором вы должны заменить значение «mykey» на соответствующее имя ключа. Например, в вашем случае Имя пользователя или Пароль

Шаг 5

Используйте следующий синтаксис для записи / изменения значения ключа

config.AppSettings.Settings["mykey"].Value = "value";

«mykey» - это ключ а «значение» - это желаемое значение

НЕ забудьте сохранить файл конфигурации после записи в него или после выполнения всех операций !!!

config.Save();

Шаг 6 (необязательно )

Вы также можете добавлять и удалять ключи в вашем файле App.Config

config.AppSettings.Settings.Add("newKey", "value");         
config.AppSettings.Settings.Remove("mykey");

Снова после каждой операции, касающейся модификации файла. Сохраните файл

config.Save();

Важное примечание

Файл app.config не тот, который вы видите в обозревателе решений в Visual Studio. Файл в обозревателе решений не будет изменен даже после сохранения.

Файл app.config, который вы будете использовать и изменять, будет находиться в C: \ Users \ yourUsername \ source \ repos \ yourAwsomeProject \ yourAwsomeProject \ bin \ Debug

или, если он находится в режиме выпуска C: \ Users \ yourUsername \ source \ repos \ yourAwsomeProject \ yourAwsomeProject \ bin \ Release

или если вы используя собственный путь к проекту

\Path\To\your\Awsome\Project\yourAwsomeProject\bin\Release

, и файл будет называться

yourAwsomeProject.exe.config

(поправьте меня, если я ошибаюсь или неправильно понял вопрос)

0 голосов
/ 08 мая 2020

Я не уверен, сработает ли это для вас или нет, но мне удалось сохранить информацию SMTP в файле app.config для одного из моих старых приложений C#.

Однако : адрес не был сохранен как часть учетных данных, поэтому я сохранил эту информацию в локальном файле 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");
            }
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...