2012-04-05 19 views
6

web.configに電子メールの詳細を設定しますが、電子メールは送信されません!appsettingsの電子メール設定を設定するweb.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.live.com" /> 
    <add key="EnableSsl" value = "true"/> 
    <add key="smtpPort" value="587" /> 
    <add key="smtpUser" value="[email protected]" /> 
    <add key="smtpPass" value="mypasswordgoeshere" /> 
    <add key="adminEmail" value="[email protected]" /> 
    </appSettings> 

私はこのアカウントコントローラで次のクラスに

を使用しています:

[HttpPost] 
public ActionResult Register(RegisterModel model) 
{ 
    if (ModelState.IsValid) 
    { 
     // Attempt to register the user 
     MembershipCreateStatus createStatus; 
     Membership.CreateUser(model.UserName, 
      model.Password, model.Email, null, null, 
      true, null, out createStatus); 
     if (createStatus == 
      MembershipCreateStatus.Success) 
     { 
      // Send welcome email 
      MailClient.SendWelcome(model.Email); 
      FormsAuthentication.SetAuthCookie(
      model.UserName, 
      false /* createPersistentCookie */); 
      return RedirectToAction("create", "Customer"); 
     } 
     else 
     { 
      ModelState.AddModelError("", 
      ErrorCodeToString(createStatus)); 
     } 
    } 
    // If we got this far, something failed, 
    // redisplay form 
    return View(model); 
} 

は右enableSslのweb.configでのアプリの設定はありますか? アドバイスをお待ちしております

+0

これらのappSettingsを読んでSMTPオブジェクトに設定するものがありますか? –

+0

追加したコードで例外が発生していますか?何が起こっている?あなたのコードでSSLを有効にするためにどこに設定したのかわかりませんが、おそらく私はそれを見落としました。コード内にClient.EnableSsl = bool.parse(ConfigurationManager.AppSettings ["EnableSsl"])が必要です。 –

+0

コード:Client.EnableSsl = bool.parse(ConfigurationManager.AppSettings ["EnableSsl"])クラス –

答えて

20

.NETのSmtpClientを使用するさらに簡単な方法は、system.netの設定を使用することです。これにより、すべてのプロパティを設定するコードを記述することなく、作成されたSmtpClientのデフォルトを設定することができます。これにより、コードを変更することなく簡単にセットアップ全体を変更することができます。

そしてコード

System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient(); 
smtp.Send(mailMessage); 

EDITには、ここで私は以下の投稿orginalコードは次のとおりです。

ニック・ボークの答えに加えて
static MailClient() 
{ 
    Client = new SmtpClient 
    { 
     Host = ConfigurationManager.AppSettings["SmtpServer"], 
     Port = Convert.ToInt32(ConfigurationManager.AppSettings["SmtpPort"]), 
     DeliveryMethod = SmtpDeliveryMethod.Network, 
     EnableSsl = bool.Parse(ConfigurationManager.AppSettings["EnableSsl"]) 

    }; 
    ..... 
} 
2

あなたには、いくつかの変更を加える必要があり、上記あなたのASPページには、

MailSettingsGroup

。このリンクが役立つことを願っています How to use the Not-so-new MailSettingsSectionGroup

+2

SmtpClientのデフォルトのコンストラクタがあなたのためにそれを処理する必要があるので、その設定コードの名前空間を使う必要はありません....しかし、何らかの理由であなたのアプリケーションの設定を読み込む必要があったなら、便利です必要であれば電子メールの送信) –

関連する問題