2011-08-06 4 views
0

사용자 입력 메일을 보내기 :액션 메일러 MVC3 내가 다음과 같이 사용자의 입력으로 이메일을 보내 ActionMailer을 사용하고

public string To { get; set; } 
public string From { get; set; } 
public string Subject { get; set; } 
public string Body { get; set; } 
: 이것은 내 EmailModel입니다

public EmailResult VerificationEmail(EmailModel model) 
    { 
      To.Add(model.To); 
      From = model.From; 
      Subject = model.Subject; 
      return Email("VerificationEmail", model); 
    } 

:

이 내 MailController입니다

이 내 VerificationEmail.txt.cshtml

@model ...Models.EmailModel 
@Model.Body 
입니다

그리고 이것은 내 EmailModel보기입니다 :

<div class="editor-field"> 
    @Html.TextAreaFor(x => x.Body) 
    @Html.ValidationMessageFor(x => x.Body) 
</div> 

이 의도 한대로, 사용자가 전자 메일 본문의 내용을 수정 및 사용자 정의 이메일을 보낼 수 있습니다 작동합니다. 하지만 내가 뭘하고 싶은건 사용자가 다음과 같이 쓸 수있게하는 것이다.

안녕하세요. 제목은 다음과 같습니다. @ Model.Subject

.. 그리고 보낸 전자 메일의 정확한 출력을 참조하십시오. 예를 들어, EmailModel.Subject가 "백만 달러를 줘"라면, 보낸 이메일은 입니다. 주제는 : 백만 달러를 줘!

"VerificationEmail.thx.cshtml"에서이 작업을 수행하고 올바른 출력을 볼 수 있지만 EmailModel View의 텍스트 영역에서 직접 수행 할 수 있기를 바랍니다.

질문 : 어떻게 할 수 있습니까?

답변

0

나는 actionmailer에서 어떻게해야할지 모르겠다.하지만 Nuget의 RazorEngine 프로젝트를 사용하여 어떻게하는지 알고있다. 문자열 템플리트를 전달할 것입니다.

RazorEngine.Razor.Compile(template, typeof(EmailModel), "EmailModel") 
var result = RazorEngine.Razor.Run<EmailModel>(model, "EmailModel") 

그런 다음 결과를 이메일 본문으로 보내주십시오.

@model을 입력 할 때 대문자를 잘못 입력 한 경우와 같이 사용자가 텍스트 영역 내부에 자체 템플릿을 만들면 오류가 발생합니다. 따라서이 메서드를 사용하면 오류 처리에서이 메서드를 포장해야합니다.

+0

확인, 감사합니다. – pitic

관련 문제