Java 发送电子邮件的主题

Java 发送电子邮件的主题,java,properties,spring-el,Java,Properties,Spring El,我正在为客户发送电子邮件服务。 所有设置,如主机、协议等,以及我存储在application.properties中的电子邮件发件人或主题 我在另一个地方上课: @ConfigurationProperties(prefix = "email.properties") public class EmailProperties { private String sender; private String subject; 并将application.properties中的数据复制到这个类中

我正在为客户发送电子邮件服务。 所有设置,如主机、协议等,以及我存储在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.
并在我发送电子邮件时为客户绑定具体的客户名称,如:

Hello Tom Rich, thank you for registered.
因此,我在类EmailProperties方法中添加了:

String getSubjectWithCustomer(User user){
...}
但我不知道如何将客户绑定为具体用户。也许我可以这样做:

String getSubjectWithCustomer(User user){
  return subject.replaceAll("CUSTOMER", user.getUserName());
}
但我觉得这是一个愚蠢的解决方案。我想用更好的。也许你有什么想法?也许我可以用SpEL来做这个?但我不知道如何绑定,因为我在任何地方都只找到了如何绑定XML文件的示例,而没有找到aplication.properties

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

问候

您可以使用where来定义参数化和本地化消息

比如:

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.