如何在不发送的情况下转换Kentico电子邮件模板?

时间:2013-09-25 22:28:41

标签: kentico

我的Kentico服务器无法发送电子邮件,所以我必须使用MacroResolver转换我的电子邮件,但是使用其他方式发送它。

var clients = new List<Client>();

var macroResolver = MacroResolver.GetInstance();
macroResolver.AddDynamicParameter("clients", clients);

var emailMessage = new EmailMessage { 
    From = "someone@somewhere.com", 
    Recipients = "otherone@somewhere.com", 
    Subject = "Whatever" 
};

var template = EmailTemplateProvider.GetEmailTemplate(templateName, siteName);

EmailSender.SendEmailWithTemplateText(siteName, emailMessage, template, macroResolver, true);

换句话说,我想将Kentico用作模板引擎。反正有没有实现这个目标?

1 个答案:

答案 0 :(得分:1)

SendEmailWithTemplateText方法基本上做的是它通过模板中的等效项填充消息的空字段并解析其中的宏值。如果您仅在邮件正文之后,则可以通过以下方式创建电子邮件:

emailMessage.Body = macroResolver.ResolveMacros(emailMessage.Body);
emailMessage.PlainTextBody = macroResolver.ResolveMacros(emailMessage.PlainTextBody);

对于大多数情况,最好告诉解析器对已解析的值进行编码。您可以通过以下方式执行此操作:resolver.EncodeResolvedValues = true;

此外,您将整个'客户'集合传递给解析器。您可能需要逐个接受它并循环生成电子邮件。