programing

이메일 템플릿으로 Razor보기

goodcopy 2021. 1. 19. 08:06
반응형

이메일 템플릿으로 Razor보기


mvc3에서 이메일 엔진을 만들고 있으며 면도기보기를 이메일 템플릿으로 사용하려고합니다. 이것이 가능하다고 들었지만 아직 그것에 대한 정보를 찾지 못했습니다.


http://razorengine.codeplex.com/사용 하여이를 수행 할 수 있습니다 . mvc 외부에서 면도기를 사용할 수 있습니다.

string Email = "Hello @Model.Name! Welcome to Razor!";
string EmailBody = Razor.Parse(Email, new { Name = "World" });

구현이 간단하고 프로젝트에 쉽게 통합 할 수 있도록 http://nuget.codeplex.com/ 에서 사용할 수 있습니다.


템플릿 파일을 사용하여 면도기 이메일 본문 템플릿으로 사용할 수 있습니다. .Net에서 파일을 텍스트로로드 할 수 있으므로 선택한 확장자를 사용할 수 있습니다. 템플릿에 다음 예제를 사용하겠습니다.

Hello @Model.Name,

Welcome to @Model.SiteName!

Regards,
Site Admins

해당 파일을 "WelcomeMessage.cshtml", "WelcomeMessage.template"등과 같은 이름으로 저장합니다. 솔루션 탐색기에서 파일을 선택하고 속성 창에서 "출력 디렉터리로 복사"를 선택한 다음 "항상 복사"를 선택합니다. 유일한 단점은이 템플릿이 응용 프로그램과 함께 있어야하며 클래스로 컴파일되지 않는다는 것입니다.

이제 메일 메시지 본문에 할당 할 문자열로 구문 분석하려고합니다. Razor는 템플릿과 모델 클래스를 가져 와서 구문 분석 한 다음 필요한 값이 포함 된 문자열을 반환합니다. 애플리케이션에서 NuGet으로 찾을 수있는 RazorEngine 패키지를 추가해야합니다. 다음은 사용법을 설명하는 간단한 코드 예제입니다.

using System.IO;
using RazorEngine;

// ...
MyModel model = new MyModel { Name = "User", SiteName = "Example.com" };
string template = File.OpenText("WelcomeMessage.template").ReadToEnd();
string message = Razor.Parse(template, model);

다른 답변과 유사하지만 텍스트 파일에서 템플릿을로드하는 빠른 방법을 보여줍니다.


아마도 MvcMailer를 고려해야 합니다 . RazorEngine은 아직 MVC를 사용하지 않는 경우 (매우) 좋지만 (웹 양식 컨텍스트에서 성공적으로 사용 했음) MVC가있는 경우이를 활용할 수도 있습니다.

( Hanselmen의 이번 주 NuGet 패키지 를 통해 2 )


NuGet의 Essential Mail : Razor 패키지를 사용할 수도 있습니다 . RazorEngine을 통해 빌드되었으며 이메일 렌더링을위한 간단한 인터페이스를 제공합니다.

이메일 메시지 템플릿은 다음과 같습니다.

@inherits Essential.Templating.Razor.Email.EmailTemplate
@using System.Net;
@{
    From = new MailAddress("example@email.com");
    Subject = "Email Subject";
}
@section Html 
{
   <html>
      <head>
          <title>Example</title>
      </head>
      <body>
          <h1>HTML part of the email</h1>
      </body>
   </html>
}
@section Text 
{
    Text part of the email.
}

GitHub에서 자세히 알아보기 : https://github.com/smolyakoff/essential-templating/wiki/Email-Template-with-Razor


Mailzor

@thiagoleite가 언급 한 내용에 연결하여 Kazi Manzur Rashid의 아이디어 (허가를 받아)를 가져 와서 내가 사용하고 싶은 방식에 대해 더 친숙해 지도록 확장했습니다.

So check out the github project 'mailzor'

It's also up on Nuget.org/packages/mailzor

ReferenceURL : https://stackoverflow.com/questions/4368815/razor-views-as-email-templates

반응형