MVCで作成しているWebプロジェクトで、私のホームページにAjax電子メールフォームがあります。フォームを送信してから、メッセージを送信する前にプロンプトを表示し、何もしないか、フォームを消去して、メッセージの正常な配信をユーザーに通知します。その代わりに、フォームを送信すると、私が返信した失敗メッセージとそれ以外のものを含む「ページ」に送られます。MVCホームページのAjax電子メールフォームが失敗する
これはビューのフォーム部分です。
@using (Ajax.BeginForm("SendEmailJson", new AjaxOptions
{
Confirm = "Send email?",
OnSuccess = "MessageSent",
OnFailure = "MessageSent"
}))
{
<div class="form-group">
@Html.Label("Name")
@Html.TextBox("FromName")
</div>
<div class="form-group">
@Html.Label("Address")
@Html.TextBox("FromEmail")
</div>
<div class="form-group">
@Html.Label("Message")
@Html.TextArea("Message", "", 5, 15, new { })
</div>
<div class="form-group">
<input type="submit" value="Send" class="btn btn-default" />
</div>
}
これは、ホームコントローラに電子メール機能を呼び出します。
[HttpPost]
public JsonResult SendEmailJson(EMailViewModel model)
{
string msg;
if (ModelState.IsValid)
{
bool suc = SendEmailMessage(model);
msg = suc ? "Message sent" : "Error sending message. Please try again";
}
else
msg = "An error occurred in the submission of this message. Please try again.";
return Json(msg);
}
private bool SendEmailMessage(EMailViewModel model)
{
try
{
var body = "Email from: {0} ({1})\n\nMessage:\n{2}";
var msg = new MailMessage();
msg.To.Add(new MailAddress("[email protected]"));
msg.From = new MailAddress(model.FromEmail);
msg.Subject = "Contact from " + model.FromEmail + " through MyWebSiteName";
msg.Body = string.Format(body, model.FromName, model.FromEmail, model.Message);
using (var smtp = new SmtpClient())
{
smtp.Send(msg);
}
}
catch(Exception)
{
return false;
}
return true;
}
モデルは非常に単純なモデルである:プログラムが失敗する理由を私は知らない
public class EMailViewModel
{
[Required]
[Display(Name = "Name")]
public string FromName { get; set; }
[Required]
[Display(Name = "Address")]
public string FromEmail { get; set; }
[Required]
[Display(Name = "Message")]
[DataType(DataType.MultilineText)]
public string Message { get; set; }
}
これについては、私はカップルの人々がしばらく待っていた、これはパズルの最後の部分です。助けてください。
編集:私は小さなテストプロジェクトにこの同じ構成データを入れて、電子メールがなかった私は、電子メールを送信する方法を考え出すたとき
<system.net>
<mailSettings>
<smtp from="[email protected]">
<network host="smtp.gmail.com"
port="587"
userName="[email protected]"
password="dummyPW"
enableSsl="true" />
</smtp>
</mailSettings>
</system.net>
:に関するSMTPの設定は、私は、Web.configファイルでこれを持っています問題なく送ったしかし、私の主な、本当のプロジェクトでは、これらの設定は、常にメッセージを送信できず、失敗メッセージを示すポップアップを表示するのではなく、メッセージだけで新しいページに私を送信する機能には影響しません。
私はWeb.configファイルにそのことがありました。配送方法を除くすべて。私は設定ファイルに同じ設定の別のプロジェクトを持っていて、メールはうまく送られました。 – MVCNovice