1

我正在使用来自 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

最后是实例化邮件程序并发送邮件的联系人控制器操作

   //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; }
       }
   }

好的,所以我遇到了多个问题:

  1. 这段代码以某种方式生成了 2-3 份电子邮件副本,以防万一我在单击表单上的提交按钮时非常小心。
  2. 消息的所有副本,包含正确的发件人电子邮件地址、主题,但它根本没有任何正文(消息实际上在我的手机上显示为“此消息没有内容”)
  3. 最后,当我确实让它工作时(当我第一次实现它时,我一辈子都看不到我做了什么让它停止工作)它以纯文本而不是 html 形式发送所有消息。

我刚刚开始学习 ASP.Net MVC,如果有任何关于如何正确实现上述内容的指示,将不胜感激。

4

1 回答 1

2

对不起,我错误地在里面放了一个空格,x.ViewName因为太晚了,所以没有抓住它。

于 2013-01-10T21:05:08.227 回答