14

私たちは常に次のようになっていることに気付きました。

SmtpClient mSmtpClient = new SmtpClient();
// Send the mail message
mSmtpClient.Send(mMailMessage);

資格情報が設定される唯一の場所は web.config です。

  <system.net>
    <mailSettings>
      <smtp>
        <network host="xxx.xx.xxx.229" userName="xxxxxxxx" password="xxxxxxxx"/>
      </smtp>
    </mailSettings>
  </system.net>

だから私の質問は、どうやってそれらを自動的に取り出すのですか?

4

4 に答える 4

20

ドキュメントには、SmtpClient のパラメーターなしのコンストラクターがアプリケーションまたはマシンの構成ファイルからその構成を読み取ると記載されています。Web アプリケーションの場合、アプリケーション構成ファイルは web.config です。これはまた、mailSettings 要素が Web.config で設定されていない場合、断念する前に machine.config で設定を検索することを意味します。

「このコンストラクターは、アプリケーションまたはコンピューターの構成ファイルの設定を使用して、新しい SmtpClient のホスト、資格情報、およびポートのプロパティを初期化します。」

于 2010-05-04T17:25:43.753 に答える
2
var config = WebConfigurationManager.OpenWebConfiguration("Web.config");    
var settings= config.GetSectionGroup("system.net/mailSettings") as MailSettingsSectionGroup;

if (settings!= null)
{
    var port = settings.Smtp.Network.Port;
    var host = settings.Smtp.Network.Host;
    var username = settings.Smtp.Network.UserName;
    var password = settings.Smtp.Network.Password;      
}
于 2010-05-04T17:29:34.287 に答える
1

優れた回答ドリイス。あなたの答えを評価するのに十分な評判があればいいのにと思いますが、そうではありません:(

とにかく、Abatishchevが示すように手動で行われますが、同様の回答を提供しました。唯一の違いは、アクセスできない atm である enableSsl の問題を解決したことです。

ここの記事のスレッドを参照してください

于 2011-08-24T14:48:36.747 に答える
1

Windows フォルダーには machine.config ファイルがあり、各 Web サイト (またはアプリケーション) には web.config ファイル (または app.config ファイル) があります。これらのファイルを組み合わせて、アプリ ドメインの設定を取得します。

smtp クラスは、おそらくConfigurationManager クラスを介して、単純に構成にアクセスします。

于 2010-05-04T17:26:43.457 に答える