发送电子邮件的主题

时间:2017-06-06 15:02:07

标签: java properties spring-el

我正致力于向客户发送电子邮件。 所有设置,如主机,协议等,以及电子邮件发件人或主题我已存储在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创建一些解析器?

的问候。

1 个答案:

答案 0 :(得分:2)

您可以使用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.