Как изменить кодировку в электронной почте Apache Commons? - PullRequest
14 голосов
/ 25 апреля 2011

Я использую электронную почту Apache Commons для отправки электронной почты своим клиентам, но у меня есть клиент под названием «Semana da Computação» (на португальском BR), но он называется «Semana da Computaçà £ o».Я пытаюсь изменить свой код, но ничего не получается:

public static boolean emailWithImage(String subject, String message, String emailReceiver, String imageURL) {
    HtmlEmail email = new HtmlEmail();
    email.setCharset("UTF-8"); // I change here, but it is not working
    email.setHostName(Constantes.EMAIL_HOST_NAME);
    email.setSmtpPort(587);
    DefaultAuthenticator authenticator =
            new DefaultAuthenticator(Constantes.EMAIL_USER, Constantes.EMAIL_PASSWORD);
    email.setAuthenticator(authenticator);
    email.setTLS(true);

    try {
        email.setFrom(Constantes.EMAIL_USER, Constantes.EMAIL_NAME);
        email.setSubject(subject);
        email.addTo(emailReceiver);

        URL url = new URL(imageURL);
        String cid = email.embed(url, "image");        /* it must be 'cid' the name of the image */

        email.setHtmlMsg("<html><img src=\"cid:" + cid + "\"> <p>" + message + "</p> </html>"); /* set the html message */
        email.setTextMsg(message);                     /* send a alternative text in case when the email reader don't support html */

        email.send();
    } catch (EmailException ex) {
        return false;
    } catch (MalformedURLException ex) {
        return false;
    }

    return true;
}

Есть идеи?Почему имя не отображается правильно и как я могу это исправить?

Ответы [ 3 ]

23 голосов
/ 23 января 2013

Это тоже работает,

email.setCharset("utf-8");

В качестве альтернативы, если вы используете 1,3,

email.setCharset(org.apache.commons.mail.EmailConstants.UTF_8);
3 голосов
/ 25 апреля 2011

Может работать, если вместо setHtmlMessage (...) вы делаете

email.addPart("<html>body here</html>", "text/html;charset=UTF-8");

Другой альтернативой является попытка поместить кодировку в html,

email.setHtmlMsg("<html><head><META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=UTF-8\"></head>body here</html>");
1 голос
/ 03 ноября 2013

Я столкнулся с той же проблемой, и для ее решения я установил кодировку ISO-8859-1, и теперь она работает.

...