java - 来自 tomcat 7 的电子邮件编码

标签 java tomcat character-encoding jakarta-mail

当我从 Tomcat 发送电子邮件时遇到编码问题。 如您所见,我在电子邮件参数中添加了“UTF-8”字符集,我还添加了过滤器

request.setCharacterEncoding("UTF-8");

我在网页的内容类型中有 text/html;charset=UTF-8。

我使用在 Apache Tomcat 7 上运行的 ZKoss 7.0.1。我的 debian 服务器上也有 apache2,它使用 mod_js 重定向到我的应用程序。

所以我得到像 ?????????? 这样的符号当我尝试发送西里尔符号时。我还在 catalina.sh 中尝试了 set -Dfile.encoding 但它没有帮助。

我有以下代码可以从 tomcat 发送电子邮件:

public static String sendProgramingMail(String text, String number) {

    try {

        final Properties props = GOOGLE_PROPERTIES;

        Session session = getSession(props);

        MimeMessage message = new MimeMessage(session);
        message.setFrom(new InternetAddress(FROM));
        message.addRecipient(Message.RecipientType.TO, new InternetAddress(TO));
        message.setSubject(Labels.getLabel("email.subject"), "UTF-8");
        message.setContent(text + "<br/>Tel. " + number, "text/html; charset=UTF-8" );

        Transport transport = session.getTransport("smtp");
        transport.connect(props.getProperty("mail.smtp.host"), 
            Integer.parseInt(props.getProperty("mail.smtp.port")),
            props.getProperty("user"),
            props.getProperty("password"));            
        Address[] addr = new Address[1];
        addr[0] = new InternetAddress(TO);
        transport.sendMessage(message, addr);

    } catch (Exception e) {

        e.printStackTrace();
        return e.getMessage();

    }

    return null;

}

最佳答案

我找到了一个解决方案。我还必须添加 response.setCharacterEncoding("UTF-8");在过滤器中。

@Override
public void doFilter(ServletRequest request, ServletResponse response,
        FilterChain chain) throws IOException, ServletException {

    request.setCharacterEncoding("UTF-8");
    response.setCharacterEncoding("UTF-8");
    chain.doFilter(request, response);

}

关于java - 来自 tomcat 7 的电子邮件编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24705495/

相关文章:

java - OnClick 不触发?

java - Jackson——使用 xpath 或类似工具解析 json

java - 如何使用so-linger保持服务器连接一段时间

jakarta-ee - 如何降级Java EE站点的JDK版本

java - 重新启动 Tomcat 服务器 7 时出错?

mysql - Latin1 数据库中的 UTF-8 数据 : can it be saved?

java - DBRider 在新测试类运行之前没有清理数据,我该如何解决这个问题?

java - Http 状态 401 此请求需要 HTTP 身份验证 ()。在 tomcat 6

powershell - IndexOf 找到一个字符串,但 -match 没有

c# - c#中char类型的大小