web-dev-qa-db-ja.com

「SMTPホストが指定されていません。」 -しかし、それは指定されていますか?

私はここで少し困惑しています-私は次のエラーを受け取っています:

SMTPホストが指定されていません。

私のコードは正しいように見えますが(私が見ることができるものから)。

コントローラー内にすべての詳細を含めることで、手動で行うことができます。

SmtpClient smtpClient = new SmtpClient("smtp.gmail.com");
smtpClient.Port = 587;
... etc

ただし、mailSettings(さまざまな異なるコントローラーで再利用可能にする)内の詳細を使用するため、これを行う必要はありません。

mailSettingsは私のWeb.Configファイル:

<system.net>
   <mailSettings>
     <smtp from="[email protected]" deliveryMethod="Network" >
       <network Host="smtp.gmail.com" defaultCredentials="true" 
                port="587" enableSsl="true" userName="[email protected]"
                password="example"/>
     </smtp>
   </mailSettings>
</system.net>

コントローラーアクション:

 [HttpPost]
 public ActionResult SubmitFeature(FormData formData)
 {
     SmtpClient smtpClient = new SmtpClient();

     MailMessage mail = new MailMessage();
     mail.To.Add(new MailAddress("[email protected]"));
     mail.Body = "Test";

     smtpClient.Send(mail);

     return View("Example");
 }

これを引き起こしている可能性のあるものがありませんか? Web.Configの他の設定をいじっていませんが、新しいMVC5プロジェクトをセットアップするときの設定はそのままです。

23
user2381114

クリーンなMVCプロジェクトでは、問題を再現できません。 ScottGuブログの投稿 に続いて、Gmailで送信されたメールを問題なく取得できました(VS 2013、.NET 4.5.1、MVC 5)。 <system.net>要素はトップレベルの要素であり、AppSettingsまたは<system.web>の内部にネストされていないことに注意してください。

重要

ソリューションにはいくつかのweb.configファイルがあります。mailSettingsがルートレベルのweb.config(Viewsフォルダーにあるファイルではなく)に挿入されていることを確認してください。

Web.Config

<configuration>
  <system.net>
    <mailSettings>
      <smtp from="[email protected]">
        <network Host="smtp.gmail.com" 
                 port="587" 
                 enableSsl="true" 
                 userName="[email protected]" 
                 password="SuperSecretPwd" 
                 defaultCredentials="false" /> <!--This must be false on Gmail-->
      </smtp>
    </mailSettings>
  </system.net>
</configuration>

コントローラー

var smtpClient = new SmtpClient();
var msg = new MailMessage();
msg.To.Add("[email protected]");
msg.Subject = "Test";
msg.Body = "This is just a test email";
smtpClient.Send(msg);

含めた追加の属性の一部が、配信方法などの問題を引き起こしているのかどうかは不明です。また、SMTPアクセスを許可する設定はありますか、それともIMAP/POP配信専用の設定ですか?

クリーンなプロジェクトでテストでき、成功した場合、これはweb.configの変換の問題、または所定のweb.config設定を上書きするプロジェクトの他の設定のいずれかを指します。

26
Tommy

解決策は Chat で言及されましたが、上記の回答に編集されたことはありません。

これらの設定は、Viewsフォルダではなく、Root Levelweb.configで行ってください。

@Tommy: ...これは、アプリケーションのルートにあるweb.configではなく、Viewsフォルダーのweb.configのように見えます

5
Malachi