Проблема с кодировкой при отправке почты на другом языке через MimeMessageHelper - PullRequest
0 голосов
/ 26 июня 2018

Отправляю почту на другом языке, например на французском, через приложение весенней загрузки через MimeMessageHelper. Использую HTML для почтового шаблона. Когда конечный пользователь получает почту, она неправильно закодирована.

Пожалуйста, проверьте снимок экрана.

Это мой код

    private void send(String to, List<String> cc, String subject, String text, String mailFileName) {
    String fileName = "mails/Docs/angular-guide.pdf";
    try {
        MimeMessage mimeMessage = this.mailSender.createMimeMessage();
        MimeMessageHelper message = new MimeMessageHelper(mimeMessage,true, "UTF-8");
        message.setFrom(from);
        message.setTo(to);
        if (cc != null && cc.size() > 0) {
            String[] array = new String[cc.size()];
            message.setCc(cc.toArray(array));
        }
        message.setSubject(subject);
        message.setText(text, true);

        if (mailFileName.equalsIgnoreCase("invitation-set-password.html")) {
            Resource resource = new ClassPathResource(fileName);
            File file = resource.getFile();         
            FileSystemResource fileSystem = new FileSystemResource(file);
            message.addAttachment("Rangular-guide.pdf", new InputStreamSource() {
                @Override
                public InputStream getInputStream () throws IOException {
                    return fileSystem.getInputStream();
                    }
                }, "application/pdf");
        }

        this.mailSender.send(mimeMessage);
    } catch (MessagingException e) {
        throw new UncheckedMessagingException(e);
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

почта получила конечного пользователя на французском

Вступление в действие (Всемирный договор) Организации Объединенных Наций, официальный документ 2003 года. Принципы соответствия и применимые действия. , утверждаю, что решение, согласие, развитие и экономическая ответственность.

Спасибо

1 Ответ

0 голосов
/ 26 июня 2018

Вы используете message.setText(text, true); для установки текста сообщения, подразумевая, что это сообщение HTML. Если это обычный текст, а не HTML, попробуйте 'message.setText (text, false);'. Если это HTML, убедитесь, что кодировка правильно задана в заголовке и элементе? Xml - и да, используйте XHTML:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        <title>Demystifying Email Design</title>
        <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
    </head>
</html>

(подробнее о шаблонах электронной почты HTML здесь ).

Кроме того, когда у меня возникли проблемы с кодировкой писем в электронных письмах, я отправил их на учетную запись, настроенную в Mozilla Thunderbird, затем открыл почту в новой вкладке и, наконец, нажал «Еще»> «Показать источник». Это позволило мне увидеть письмо в точности так, как оно было отправлено почтовому клиенту, и проверить, правильно ли установлены все кодировки.

Наконец, если ничего из вышеперечисленного не поможет, вы можете попробовать сопоставить нелатинские буквы с их кодами Юникода, например. А до \ u0192, а до \ u0224 и т. Д. здесь - полный список.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...