Я использую Spring Message с заполнителями для создания сообщения электронной почты. Аргументы для заполнителей содержат международные символы. После того, как основной текст сообщения электронной почты установлен с использованием метода getMessage()
с сообщением, аргументами и локалью, и электронное письмо отправлено, полученное электронное письмо будет содержать значения заполнителей с символами ISO-8859. Как обеспечить сохранение аргументов в кодировке UTF-8 при замене в свойстве сообщения.
Пакет возвращаемых свойств:
@Bean
public MessageSource emailProps() {
ReloadableResourceBundleMessageSource messageSource = new
ReloadableResourceBundleMessageSource();
messageSource.setBasenames("classpath:props/Email");
messageSource.setDefaultEncoding("UTF-8");
return messageSource;
}
MailSender. java
@Autowired
private MessageSource emailProps;
public void send(String to, String language,String name, String org_name) throws MessagingException {
//org_name has values like "GmbH (Süd) München"
//some code here
MimeMessage message = javaMailSender.createMimeMessage();
MimeMessageHelper helper=new MimeMessageHelper(message,
MimeMessageHelper.MULTIPART_MODE_MIXED_RELATED, "UTF-8");
//helper.setFrom, helper.setTo....
helper.setText(emailProps.getMessage("security.email.body", new Object[] {name,org_name},
Locale.GERMAN)+emailProps.getMessage("email.footer", null, Locale.GERMAN), true);
//remaining part of the code
}
В электронном письме org_name появляется как «GmbH (Süd) München».
Вопрос: что мне делать, чтобы значения аргументов в кодировке UTF-8 оставались как есть? У меня есть значения аргументов, поступающие из БД, и я проверил, что они сохраняют кодировку до шага, прежде чем они будут записаны в тело сообщения.