0

次のコードを使用して、RazorEngine を使用して電子メールを作成および送信しています。

//build email using template.
string template = File.OpenText(EmailTemplatePath).ReadToEnd();
OrganizationInviteEmailTemplate model = new OrganizationInviteEmailTemplate()
{
    FirstName = Invitation.FirstName,
    LastName = Invitation.LastName,
    Message = Message,
    OrganizationName = Invitation.Organization.OrganizationName,
    ConfirmUrl = string.Format(ConfirmUrlTemplate, Invitation.InviteCode)
};
string body = Razor.Parse(template, model);

//email the invitation.
MailMessage message = new MailMessage();
message.To.Add(Invitation.Email);
message.Subject = "Invitation From " + Invitation.Organization.OrganizationName;
message.Body = body;
message.IsBodyHtml = true;

SmtpClient client = new SmtpClient();
client.Send(message);

テンプレートは以下です。

 <html>
     <head>
     </head>
     <body>
         <h3>@Model.OrganizationName has invited you to be part of their organization</h3>

         <p>
         Hi @Model.FirstName,
         </p>

         .....etc......
     </body>
 </html>

「テンプレートをコンパイルできません」というエラーが 10 回中 9 回発生し、モデルを削除してテンプレートを調整すると、1 回は機能します。および/または代わりにParseを使用するようにコードを調整しますが、すぐに機能しなくなります。何かがコードの一部を一時的にキャッシュしているようなものです。

RazorJSバージョン 2.1.4113.149に含まれている RazorEngine.dll を使用しています。多分それが問題です。これにはすでに時間がかかりすぎているため、次にこのライブラリまたは郵便を試します。または、いまいましいことをハードコーディングするだけです。

4

2 に答える 2

-1

すべてを自分でコーディングする場合を除き、 MvcMailer のような nuget パッケージをインストールする方が簡単です

于 2011-04-22T15:01:58.827 に答える
-1

テンプレートの先頭に @model 宣言がありませんか?

于 2011-08-16T22:08:33.997 に答える