кодировка utf 8 не работает с почтой javax

Я использовал Javax Mail API для отправки электронных писем. Я использую контактную формуляр для отправки ввода, который необходимо отправить на конкретное электронное письмо.

Электронное письмо отправляется без проблем, хотя я датский парень, и поэтому мне нужны три датских символа: is, ø и å, в теме и тексте электронного письма.

Поэтому я видел, что могу использовать кодировку UTF-8 для предоставления этих символов, но когда моя почта отправляется, я вижу только некоторые странные буквы - «ã¦», «ã¸» и «ã ¥» - вместо датских букв - «æ», «ø» и «å».

Мой метод отправки электронного письма выглядит следующим образом

public void sendEmail(String name, String fromEmail, String subject, String message) throws AddressException, MessagingException, UnsupportedEncodingException, SendFailedException
{
    //Set Mail properties
    Properties props = System.getProperties();
    props.setProperty("mail.smtp.starttls.enable", "true");
    props.setProperty("mail.smtp.host", "smtp.gmail.com");
    props.setProperty("mail.smtp.socketFactory.port", "465");
    props.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
    props.setProperty("mail.smtp.auth", "true");
    props.setProperty("mail.smtp.port", "465");
    Session session = Session.getDefaultInstance(props, new javax.mail.Authenticator() {
        @Override
        protected PasswordAuthentication getPasswordAuthentication() {
            return new PasswordAuthentication("my_username", "my_password");
        }
    });

    //Create the email with variable input
    MimeMessage mimeMessage = new MimeMessage(session);
    mimeMessage.setHeader("Content-Type", "text/plain; charset=UTF-8");
    mimeMessage.setFrom(new InternetAddress(fromEmail, name));
    mimeMessage.setRecipient(Message.RecipientType.TO, new InternetAddress("my_email"));
    mimeMessage.setSubject(subject, "utf-8");
    mimeMessage.setContent(message, "text/plain");

    //Send the email
    Transport.send(mimeMessage);
}

Пожалуйста, помогите мне узнать, как я могу исправить эту "ошибку".

39 голосов | спросил Rohwedder 23 FebruaryEurope/MoscowbSat, 23 Feb 2013 22:28:45 +0400000000pmSat, 23 Feb 2013 22:28:45 +040013 2013, 22:28:45

3 ответа


0

Может быть, вы также должны предоставить UTF-8 здесь

mimeMessage.setContent(message, "text/plain; charset=UTF-8");

Вы должны посмотреть на http://www.coderanch.com/т /274480 /Java /Java /JavaMail-Set-Content- UTF

ответил Arsen Alexanyan 23 FebruaryEurope/MoscowbSat, 23 Feb 2013 22:33:08 +0400000000pmSat, 23 Feb 2013 22:33:08 +040013 2013, 22:33:08
0

Потратив много времени на отладку и поиск в Интернете подсказки, я нашел решение своей проблемы.

Кажется, что когда бы я ни отправлял данные через веб-запрос, мое приложение не кодировало символы с кодировкой UTF-8. Это означало, что данные, отправленные из моей контактной формы, которые содержали символы æ, ø и å, не могли корректно обрабатываться кодировкой символов.

Похоже, что в моем дескрипторе развертывания решение настроило Фильтр кодировки символов , который будет кодировать все входящие запросы из Интернета в кодировку символов UTF-8.

private void registerCharacterEncodingFilter(ServletContext servletContext) {
    CharacterEncodingFilter encodingFilter = new CharacterEncodingFilter();
    encodingFilter.setEncoding("UTF-8");
    encodingFilter.setForceEncoding(true);
    FilterRegistration.Dynamic characterEncodingFilter = servletContext.addFilter("characterEncodingFilter", encodingFilter);
    characterEncodingFilter.addMappingForUrlPatterns(null, false, "/*");
}

Этот фильтр устанавливает кодировку UTF-8 и принудительно кодирует все запросы, поступающие по URL '/*'.

ответил Rohwedder 2 MaramSat, 02 Mar 2013 00:19:15 +04002013-03-02T00:19:15+04:0012 2013, 00:19:15
0

Это легко, запустите ваш проект с параметром -Dfile.ecoding = UTF-8! например: java -Dfile.encoding = UTF-8 -jar MyProject.jar

ответил user2582242 15 PM00000020000004431 2013, 14:45:44

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132