java邮件问题?乱码问题!

lsky 2003-12-12 04:01:59
在程序中如果发件人为中文的话,在outlook中收到的邮件,发件人为乱码。其他的内容、标题等都正常。

就下面这句话:
InternetAddress from=new InternetAddress("管理员");

如果是英文的话收到后正常。

以下为程序例

<%@ page contentType="text/html;charset=GB2312" %>
<%request.setCharacterEncoding("gb2312");%><!--中文处理代码-->

<!--引入要用到的类库-->
<%@ page import="java.util.*,javax.mail.*"%>
<%@ page import="javax.mail.internet.*"%>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>发送成功</title>
</head>

<body>
<%
try{

//从html表单中获取邮件信息
String tto=request.getParameter("to");
String ttitle=request.getParameter("title");
String tcontent=request.getParameter("content");
Properties props=new Properties();//也可用Properties props = System.getProperties();
props.put("mail.smtp.host","mail.tkqd.com");//存储发送邮件服务器的信息
props.put("mail.smtp.auth","true");//同时通过验证
Session s=Session.getInstance(props);//根据属性新建一个邮件会话
s.setDebug(true);

MimeMessage message=new MimeMessage(s);//由邮件会话新建一个消息对象

//设置邮件
InternetAddress from=new InternetAddress("管理员");
message.setFrom(from);//设置发件人
InternetAddress to=new InternetAddress(tto);
message.setRecipient(Message.RecipientType.TO,to);//设置收件人,并设置其接收类型为TO
message.setSubject(ttitle);//设置主题
message.setText(tcontent);//设置信件内容
message.setSentDate(new Date());//设置发信时间

//发送邮件
message.saveChanges();//存储邮件信息
Transport transport=s.getTransport("smtp");
transport.connect("10.31.9.8","administrator","Administrator");//以smtp方式登录邮箱
transport.sendMessage(message,message.getAllRecipients());//发送邮件,其中第二个参数是所有
//已设好的收件人地址
transport.close();

%>
<div align="center">
<p><font color="#FF6600">发送成功!</font></p>
<p><a href="recmail.jsp">去看看我的信箱</a><br/>
<br/>
<a href="default.htm">再发一封</a> </p>
</div>
<%
}catch(MessagingException e){
out.println(e.toString());
}
%>
</body>
</html>

...全文
91 4 打赏 收藏 举报
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
onizuka5211 2003-12-15
邮件的附件总是乱码,我也没有解决,好像和服务器有关系,我用
apache2.041,tomcat 4.124
  • 打赏
  • 举报
回复
upcmill 2003-12-15
up
  • 打赏
  • 举报
回复
op2618 2003-12-12
你用是什么服务器啊!把服务器的默认编码改为iso-8859-1!
  • 打赏
  • 举报
回复
computerboy111 2003-12-12
电子邮件在网络中传输时只有一种统一编码:iso-8859-1,以下是一段电子邮件标题的原是编码。<<From: "=?GB2312?B?jE+x8w==?=">>:其中的GB2312是你原文件的编码方式,B代表BASE64是outlook的字符解码方式。出现乱码的根本原因就在于这两个东东是不是正确,如果不对的话,显示双字节字符的时候就是乱麻了(其实是两个单字节字符),现在知道为什么英文能显示,中文不能显示了吧。
解决办法:对你的jsp页面上的字符串进行显示编码,new String(youstring.getByte("GB2312"),"iso-8859-1"),或者反过来试试,这个取决于你系统,在不同的操作系统下,这个编码问题蛮让人头痛的
  • 打赏
  • 举报
回复
相关推荐
发帖
Web 开发
加入

8.0w+

社区成员

Java Web 开发
社区管理员
  • Web 开发社区
申请成为版主
帖子事件
创建了帖子
2003-12-12 04:01
社区公告
暂无公告