使用JavaMail 问题,可以成功发送邮件,可是接收到的中文部分显示乱码,不知是否跟系统有关,服务器的配置是FreeBSD 5.3-RELEASE +Resin/2.1.14 .
代码如下:
try {
Properties props = new Properties();
props.put("mail.smtp.host", smtphost);
props.put("mail.smtp.auth","true");
Session ssn = Session.getInstance(props, null);
MimeMessage message = new MimeMessage(ssn);
InternetAddress fromAddress = new InternetAddress(from);
message.setFrom(fromAddress);
InternetAddress toAddress = new InternetAddress(to);
message.addRecipient(Message.RecipientType.TO, toAddress);
message.setSubject(new String(subject.getBytes("ISO8859_1"),"GBK"));
message.setText(new String(body.getBytes("ISO8859_1"),"GBK"));
Transport transport = ssn.getTransport("smtp");
transport.connect(smtphost, user, password);
transport.sendMessage(message, message.getRecipients(Message.RecipientType.TO));
//transport.send(message);
transport.close();
out.println(subject+"<br/>");
%><p>你的邮件已发送,请返回。</p><%
} catch(Exception m) {
out.println(m.toString());
}%>

解决方案 »

  1.   


    这是javamail中的老问题,其中就是英文字符为8位,而汉字一般为16位,所以就出现了读取邮件时中文显示为乱码了,以前我看到过这类解决问题的方法,说是自己写一个读取邮件的程序,一个字符一个字符的读,然后两两合并成中文吧,我记不得了,具体可以到javaworld里面去找吧。真是不好意思
      

  2.   

    to:lejuo(zuijunting)  
    谢谢你的解答,我会再去找找其他的资料to:kingofworl(良辰美景虚度) 
    有什么办法可以解决吗? 因为服务器是租用的,它不可能会为我去改变lang系统的字符集设置.
      

  3.   

    你试下设置为utf-8的字符集吧
      

  4.   

    恩 和smartupload一样的问题  需要用UTF-8字符集来传递
      

  5.   

    乱码问题已经搞定, 加上
    message.setSubject(subject,"GBK");
    message.setText(body,"GBK");
    就OK了,, 经过多种方法的测试其实跟系统字符集还是有关的,我在另一台linux+resin3.0 服务器上测试不需要加上面代码发送的内容也不会乱码.
    把问题解决的方面贴上来希望对大家有所帮助.