电子邮件模板中的动态内容

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了电子邮件模板中的动态内容相关的知识,希望对你有一定的参考价值。

我有rails背景,我正在努力实现像imageenter image description here中所示的东西

我的电子邮件模板将包含此类标签。在将电子邮件发送给客户端时,他的信息将填入模板中。我发现这个链接here但没有答案。我抬头找到了thisgem,但我不能使用它,因为它使用液体模板,因为时间限制我无法实现它。

我知道我可以完成查找{{first_name}}并在标签出现时替换内容的全部内容,但我怀疑它是否是实现它的有效方式。

请分享您的想法和指导。提前致谢 :)

答案

当我发布这个问题并且很快就忘记了它时,我是一个铁杆中的菜鸟,并且一个upvote让我想起了它。如果有人在寻找它,我成功地使它工作并分享我的解决方案:

class DynamicTemplateModel < ActiveRecord::Base

  def self.parse_template(template, attrs={})
    result = template
    attrs.each { |field, value| result.gsub!("{{#{field}}}", value) }
    # remove anything that resembles a field but did not match a known field name
    result.gsub!(/{{.w+}}/, '')
    return result
  end

end

用法:DynamicTemplate.parse_template(body, details)

哪里

details = {first_name: user.first_name, last_name: user.last_name, company: user&.company&.name, email_address: user.email}

body = "Hi {{first_name}} {{last_name}}, Your company {{company}} is registered with us successfully"

使用parse_template方法,新的身体将如预期的那样。

我对diofeher solution关于替换字符串的主要担心是安全问题。所以用这个来管理。

希望这有助于某人。留下任何建议,使其更好。谢谢

另一答案

如前所述,您可以使用Liquid替换它,或者您可以尝试使用(http://www.kuwata-lab.com/erubis/)。

另一种选择是替换这样的标签:

ERB.new(your_template.gsub("{{", "<%=").gsub("}}", "%>")).result

您可以更改变量的默认打印以使用{{ }}语法。

以上是关于电子邮件模板中的动态内容的主要内容,如果未能解决你的问题,请参考以下文章

使用T4模板动态生成邮件内容并储存到任意位置

为电子邮件模板中动态添加的 html 代码设置样式

mandrill 模板电子邮件中的动态 html

在ansible模板中使用动态组名称

Django 允许用户在电子邮件中插入动态内容

Eclipse 中的通用代码片段或模板