0

mvcWebアプリでmvcmailerを使用しようとしています。ダミープロジェクトで使用し、wikiに記載されている手順を続行すると、正常に機能し、メールを送信できました。

しかし、それをWebアプリに統合しようとすると、「PopulateBody(mailMessage、viewName: "Welcome");」でエラーが発生します。_Layout.textが見つからないことを示します。_Layout.text.cshtmlおよび_Layout.cshtmlは、Welcome.cshtmlとともにUsermailerフォルダーに存在します。

ユーザーメーラーコード

public class UserMailer : MailerBase, IUserMailer     
    {
        public UserMailer():
            base()
        {
            MasterName="_Layout";
        }
public virtual MailMessage Welcome(string email, string validationUrl)
        {
            var mailMessage = new MailMessage{Subject = "Welcome to GiftSocial"};

            mailMessage.To.Add(email);
            ViewBag.Validationkey = validationUrl;
            PopulateBody(mailMessage, viewName: "Welcome");

            return mailMessage;
        } 
}

コントローラコード

UserMailer.Welcome(email:model.Email、validationUrl:validationUrl).Send();

コピーされた例外の詳細:

System.Web.HttpException was unhandled by user code
  Message=The layout page "_Layout.text" could not be found at the following path: "~/Views/UserMailer/_Layout.text".
  Source=Mvc.Mailer
  ErrorCode=-2147467259
  WebEventCode=0
  StackTrace:
       at Mvc.Mailer.StringResult.ExecuteResult(ControllerContext context, String mailerName)
       at Mvc.Mailer.MailerBase.EmailBody(String viewName, String masterName)
       at Mvc.Mailer.MailerBase.PopulateTextBody(MailMessage mailMessage, String viewName, String masterName)
       at Mvc.Mailer.MailerBase.PopulateBody(MailMessage mailMessage, String viewName, String masterName, Dictionary`2 linkedResources)
       at MvcGiftSocial.Mailers.UserMailer.Welcome(String email, String validationUrl) 
       at MvcGiftSocial.Controllers.AccountController.Register(RegisterViewModel viewmodel, String returnUrl) in C:\Users\ASUS\Documents\Visual Studio 2010\Projects\GiftSocialAzureNew\MvcGiftSocial\Controllers\AccountController.cs:line 86
       at lambda_method(Closure , ControllerBase , Object[] )
       at System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters)
       at System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters)
       at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters)
       at System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClass15.<InvokeActionMethodWithFilters>b__12()
       at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation)
  InnerException: 

誰かが私が間違っていることを教えてくれたら心から感謝します。

ありがとうArnab

4

1 に答える 1

0

エラーはほとんど自明です。必要なビューが見つかりませんでした。テキスト/プレーンメール メッセージを送信しようとしていたようです。そのため、MvcMailer はそのようなビューを探していました。

参照: https://github.com/smsohan/MvcMailer/wiki/MvcMailer-Step-by-Step-Guide#wiki-send-multi-part-emails

于 2014-03-05T11:13:06.560 に答える