taolib.testing.email_service.template.engine#

Jinja2 沙箱模板引擎。

提供安全的模板渲染,支持变量替换、条件判断和循环。 营销邮件自动注入合规退订链接。

Attributes#

Classes#

RenderedEmail

渲染后的邮件内容。

TemplateEngine

Jinja2 沙箱模板引擎。

Module Contents#

class taolib.testing.email_service.template.engine.RenderedEmail#

渲染后的邮件内容。

subject: str#
html_body: str#
text_body: str | None = None#
taolib.testing.email_service.template.engine._UNSUBSCRIBE_HTML = Multiline-String#
Show Value
"""
<div style="margin-top: 32px; padding-top: 16px; border-top: 1px solid #e5e7eb;
            text-align: center; font-size: 12px; color: #6b7280;">
  <p>如果您不希望继续接收此类邮件,可以
    <a href="{url}" style="color: #3b82f6; text-decoration: underline;">点击此处退订</a>。
  </p>
  <p>If you no longer wish to receive these emails, you can
    <a href="{url}" style="color: #3b82f6; text-decoration: underline;">unsubscribe here</a>.
  </p>
</div>
"""
taolib.testing.email_service.template.engine._UNSUBSCRIBE_TEXT = Multiline-String#
Show Value
"""
---
退订 / Unsubscribe: {url}
"""
class taolib.testing.email_service.template.engine.TemplateEngine(unsubscribe_base_url: str = '')#

Jinja2 沙箱模板引擎。

使用 SandboxedEnvironment 防止模板注入攻击。 StrictUndefined 确保缺失变量会立即报错。

_env: jinja2.Environment#
_unsubscribe_base_url = ''#
render(template_doc: taolib.testing.email_service.models.template.TemplateDocument, variables: dict, email_type: taolib.testing.email_service.models.enums.EmailType = EmailType.TRANSACTIONAL, recipient_email: str | None = None, unsubscribe_token: str | None = None) RenderedEmail#

渲染模板。

参数:
  • template_doc -- 模板文档

  • variables -- 模板变量

  • email_type -- 邮件类型

  • recipient_email -- 收件人邮箱(营销邮件需要)

  • unsubscribe_token -- 退订令牌(营销邮件需要)

返回:

渲染后的邮件内容

抛出:

TemplateRenderError -- 模板渲染失败

validate_template(template_string: str, variables: dict | None = None) list[str]#

验证模板语法。

参数:
  • template_string -- 模板字符串

  • variables -- 测试变量

返回:

错误列表,空列表表示有效

_render_string(template_string: str, variables: dict) str#

渲染单个模板字符串。

注入退订链接。