Nuget の ASP.Net MVC 4 と MVCMailer 4.0 を使用しています。メッセージを作成し、それをスキャフォールディングされたウェルカム メッセージに送信すると、すべてが正常に機能し、メールを正常に送信できます (唯一のことは、HTML が含まれているプレーン テキストであることです)。
お問い合わせフォームを使用してメッセージを送信するときに問題が発生します。まず、私が持っているものとそれをどのように使用しているかをお見せしましょう。
/*UserMailer.cs*/
public virtual MvcMailMessage ContactForm(MailMessage mailmessage)
{
ViewBag.Name = mailmessage.Name;
ViewBag.Body = mailmessage.MessageBody;
return Populate(x =>
{
x.Subject = "Scheduler) " + mailmessage.Subject;
x.ViewName = "Contact Form";
x.To.Add("Hiva@Varyan.com");
});
}
ビューに進みます
@*ContactForm.cshtml*@
<h2>ContactForm</h2>
<strong>Name: </strong> @ViewBag.Name <br />
<strong>Message: </strong> @ViewBag.Body
最後に、メーラーをインスタンス化してメールを送信する Contact Controller アクション
//ContactController.cs
namespace Scheduler.Controllers
{
public class ContactController : Controller
{
//
// GET: /Contact/
private IUserMailer _userMailer = new UserMailer();
public IUserMailer UserMailer
{
get { return _userMailer; }
set { _userMailer = value; }
}
public ActionResult Index()
{
return View();
}
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Index(MailMessage _mailMessage)
{
UserMailer.ContactForm(_mailMessage).Send();
return View();
}
}
}
完全を期すために、モデルも含めます
//MailMessage.cs
namespace Scheduler.Model
{
public class MailMessage
{
public string Name { get; set; }
public string EmailAddress { get; set; }
public string Subject { get; set; }
public string MessageBody { get; set; }
}
}
わかりました、私が抱えている複数の問題があります:
- このコードは、どういうわけかメールのコピーを 2 ~ 3 部生成します。念のため、フォームの送信ボタンをクリックするのに非常に注意を払いました。
- メッセージのすべてのコピーには、正しい差出人メールアドレスと件名が含まれていますが、本文はまったくありません (メッセージは実際には、電話で「このメッセージにはコンテンツがありません」と表示されます)。
- 最後に、私がそれを機能させたとき(最初に実装したとき、そしてそれが機能しなくなるために何をしたかを一生見ることができません)、すべてのメッセージをhtmlではなくプレーンテキストとして送信します。
私はASP.Net MVCの学習を始めたばかりで、上記を正しく実装する方法についての指針があれば大歓迎です。