【发布时间】:2011-04-22 14:35:05
【问题描述】:
我正在使用以下代码使用 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 次出现“无法编译模板”错误,然后在我通过删除 Model. 调整模板和/或调整代码以使用 解析,但它会马上回到不工作。就好像某事正在短暂缓存一段代码之类的。
我正在使用 RazorJS 中包含的 RazorEngine.dll,版本 2.1.4113.149。也许这就是问题所在。接下来要尝试this library 或Postal,因为这已经花费了太多时间。或者只是硬编码该死的东西。
【问题讨论】:
-
看看 RazorEngine 关于 codeplex 的讨论:razorengine.codeplex.com/discussions/248593。
-
澄清一下,您的模板是否正确构建?意味着所有html标签在适当的时候都有结束标签吗?这里的帖子没有显示结束
<h3>标记,因此可能会导致它失败 - 没关系有人奇怪地编辑了你的帖子 -
我创建了一个快速的
OrganizationInviteEmailTemplate模型,填充它并用你的剪断运行它,它运行良好。将您的模型副本和完整模板通过电子邮件发送给 ben@this name.com,我将能够查看并查看错误可能出在哪里。 -
感谢您的关注。它必须与其他程序集有关,或者它在 IIS 中执行。我认为我们不会解决这个问题,所以只需对其进行硬编码并使用 string.Format。我已经花了太多时间试图让它发挥作用。
-
仅供参考,我在离开时删除了 RazorJS 和问题。我的猜测是 RazorJS 正在重新配置一些全局变量并导致问题。
标签: c# .net razor razorengine