邮件模板 API

EmailTemplates 接口有下列方法:

  • EmailInfo generateEmail(EmailTemplate emailTemplate, Collection<ReportWithParams> params) 使用模板创建 EmailInfo 对象,模板可以包含同一个报表,但使用不同参数。

  • EmailInfo generateEmail(EmailTemplate emailTemplate, Map<String, Object> params) 使用参数映射创建 EmailInfo,使用所有报表。

  • void checkParameterTypeChanged(ReportInputParameter inputParameter, ParameterValue parameterValue) 确保报表输入参数的类型没有改变。

EmailTemplate 实体包含标题、正文和附件。以及,寄件人、收件人、抄送、密送地址。

ReportWithParams 是一个报表及其参数的包装器类。

ParameterValue 类提供参数的别名和类型的字符串表示形式。

ReportInputParameter 是 Jmix 报表 扩展组件中的类。

EmailInfo 是 Jmix 电子邮件 扩展组件中的类。

邮件模板 Builder

邮件模板 API 包含一个构建器,可以用于创建并填充 EmailTemplate 实体。

EmailTemplateBuilderImplEmailTemplateBuilder 的一个实现。提供设置和添加邮件模板属性的中间方法。还包含可以构建 EmailTemplate 或创建及发送 EmailInfo 的方法。

EmailTemplateBuilderImpl 类的对应 setter 会复制指定的 EmailTemplate。每个中间方法都是填充这个复制的实体。

public void setEmailTemplate(EmailTemplate emailTemplate) {
    this.emailTemplate = cloneTemplate(emailTemplate);
}

build() 方法会创建构建器内副本的副本。因此,有必要保存已经存在的实体和构建器的状态。

使用构建器的示例:

EmailTemplate newTemplate = emailTemplates.buildFromTemplate(CREATED_TEMPLATE_CODE)
        .setSubject("Test subject")
        .setTo("address@haulmont.com")
        .setBodyParameter("subscription", subscription)
        .setBodyParameter("customer", subscription.getCustomer())
        .build();