我从Tomcat发送电子邮件时遇到编码问题。 如您所见,我添加了" UTF-8"电子邮件参数中的charset,我还添加了
过滤器request.setCharacterEncoding("UTF-8");
我在网页的内容类型中有text / html; charset = UTF-8。
我使用在Apache Tomcat 7上运行的ZKoss 7.0.1。我的debian服务器上也有apache2,它使用mod_js重定向到我的应用程序。
所以我得到像?????????的符号当我尝试发送西里尔符号时。我也尝试在catalina.sh中设置-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;
}
答案 0 :(得分:0)
我找到了解决方案。我还要添加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);
}