【问题标题】:Subject for sending email发送电子邮件的主题
【发布时间】:2017-06-06 23:14:33
【问题描述】:

我正在开发向客户发送电子邮件的服务。 所有设置,如主机、协议等,以及我存储在 application.properties 中的电子邮件发件人或主题。

我在另一个地方上课:

@ConfigurationProperties(prefix = "email.properties")
public class EmailProperties {

private String sender;
private String subject;

application.properties 中的数据被复制到这个类中,效果很好……

但是我的问题是什么。 我想设置主题,例如:

email.properties.subject=Hello CUSTOMER, thank you for registered.

并在我发送电子邮件时将 CUSTOMER 绑定为具体的客户名称,例如:

Hello Tom Rich, thank you for registered.

所以我在类中添加了 EmailProperties 方法:

String getSubjectWithCustomer(User user){
...}

但我不知道如何为具体用户绑定 CUSTOMER。也许我可以这样做:

String getSubjectWithCustomer(User user){
  return subject.replaceAll("CUSTOMER", user.getUserName());
}

但我觉得这是愚蠢的解决方案。我想用更好的东西。也许你有什么想法?也许我可以为此使用SpEL?但我不知道怎么做,因为我到处都发现了如何绑定 XML 文件而不是 aplication.properties 的示例。

也许我可以使用 SpEL 创建一些解析器?

问候。

【问题讨论】:

    标签: java properties spring-el


    【解决方案1】:

    您可以使用Spring MessageSource 来定义参数化和本地化的消息。

    类似:

    public String getLocalizedSubject(Object[] params) {
        return getLocalizedSubject(params, Locale.getDefault());
    }
    
    public String getLocalizedSubject(Object[] params, Locale locale) {
        return messageSource.getMessage("subject", params, locale);
    }
    

    使用:

    Object[] params = new Object[] { user.getUserName() };
    getLocalizedSubject(params);
    

    并在 messages.properties 中定义主题

    subject=Hello {0}, thank you for register.
    

    【讨论】:

      猜你喜欢
      • 2012-06-02
      • 2017-12-26
      • 2011-06-21
      • 2017-10-03
      • 2020-11-06
      • 1970-01-01
      • 2012-01-02
      • 1970-01-01
      • 2015-10-16
      相关资源
      最近更新 更多