私はここで少し困惑しています-私は次のエラーを受け取っています:
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プロジェクトをセットアップするときの設定はそのままです。
クリーンな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設定を上書きするプロジェクトの他の設定のいずれかを指します。
解決策は Chat で言及されましたが、上記の回答に編集されたことはありません。
これらの設定は、Viewsフォルダではなく、Root Levelのweb.config
で行ってください。
@Tommy: ...これは、アプリケーションのルートにあるweb.configではなく、Viewsフォルダーのweb.configのように見えます