簡體   English   中英

如何在Windows應用程序C#中更改app.config文件

[英]How to change app.config file in window application c#

我有一個窗口應用程序,並且在其中使用了電子郵件功能,並且電子郵件設置位於app.config文件中。其內容如下

<system.net>
<mailSettings>
  <smtp from="email@gmail.com">
    <network host="smtp.gmail.com" port="587" userName="username" password="password" enableSsl="true" />

  </smtp>
</mailSettings>
</system.net>

我想使用以上部分的編碼進行更改..我必須通過配置文件中smtp和網絡部分的編碼進行更改。

我認為您正在問如何以編程方式執行此操作?

這里有一個答案:

使用C#通過Gmail SMTP服務器發送電子郵件

另外,在msdn網站上的一個很好的例子:

http://msdn.microsoft.com/zh-CN/library/system.net.mail.smtpclient.aspx

讓我知道這是否不是您要的。

編輯:一旦問題清楚就顯示答案:

如何在不使用用戶設置的情況下在運行時讀取/寫入app.config設置?

祝好運

我找到了解決方法....

 FileInfo objFileInfo = new FileInfo(Assembly.GetExecutingAssembly().Location + ".config");
            XmlDocument objXmlDoc = new XmlDocument();
            objXmlDoc.Load(objFileInfo.FullName);
            XmlElement objElement = objXmlDoc.DocumentElement;
            XmlNode objAppSettingNode = objElement.SelectSingleNode("appSettings");

            foreach (XmlNode appSetting in objAppSettingNode)
            {
                if (appSetting.Name.Equals("add"))
                {
                    appSetting.Attributes["value"].Value = txtEmailAddress.Text.Trim();
                }

            }

            XmlNode objMailSettingNode = objXmlDoc.DocumentElement.SelectSingleNode("system.net/mailSettings");
            if (objMailSettingNode != null)
            {
                foreach (XmlNode childNode in objMailSettingNode)
                {
                    if (childNode.Name.ToLower().Equals("smtp"))
                    {
                        childNode.Attributes["from"].Value = txtEmailAddress.Text.Trim();
                        foreach (XmlNode networkNode in childNode)
                        {
                            if (networkNode.Name.ToLower().Equals("network"))
                            {
                                networkNode.Attributes["host"].Value = txtSmtp.Text.Trim();
                                networkNode.Attributes["userName"].Value = txtEmailAddress.Text.Split('@')[0].Trim();
                                networkNode.Attributes["password"].Value = txtPassword.Text.Trim();
                                networkNode.Attributes["port"].Value = txtPort.Text.Trim();
                            }
                        }
                    }
                }
            }

            objXmlDoc.Save(objFileInfo.FullName);
            lblErrormsg.Text = string.Empty;
            this.Close();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM