高分,再求用javamail发邮件时主题出现乱码的问题 ,问题解决马上揭帖
在网上看过很多介绍发邮件出现乱码的解决办法,主要就是sun.misc.BASE64Encoder enc = new sun.misc.BASE64Encoder();
msg.setSubject("=?GB2312?B?"+enc.encode(subject.getBytes())+"?=");
为什么我用这种方法还是不可以呢?希望高手和处理过类似问题的朋友帮忙看看,谢谢拉
我开一个链接,大家可以直接在这里测试,运行
erp-deve.smartdotweb.com/testmail/sendmail3.jsp
谢谢大家拉,问题解决,马上揭帖!
问题点数:100、回复次数:9Top
1 楼weichenggao(一万年太久,只争朝夕)回复于 2003-12-03 14:03:44 得分 0
提交后的页面,谢谢大家拉
String host="smtp.smartdotweb.com";
String to=request.getParameter("to");
StringTokenizer ST = new StringTokenizer(to,";");
String from=request.getParameter("from");
String subject=request.getParameter("subject");
String body=strrequest(request.getParameter("body"));
boolean sessionDebug=false;
java.util.Properties props=System.getProperties();
props.put("smtp.smartdotweb.com",host);
props.put("你的STMP伺服器?","smtp.smartdotweb.com");
props.put("mail.smtp.auth","true");
Session mailSession=Session.getDefaultInstance(props,null);
Message msg=new MimeMessage(mailSession);
msg.setFrom(new InternetAddress(from));
while(ST.hasMoreTokens()) {
InternetAddress[] address={ new InternetAddress(ST.nextToken())};
msg.setRecipients(Message.RecipientType.TO,address);
sun.misc.BASE64Encoder enc = new sun.misc.BASE64Encoder();
msg.setSubject("=?GB2312?B?"+enc.encode(subject.getBytes())+"?=");
//msg.setSubject(subject);
msg.setSentDate(new java.util.Date());
msg.setContent(body.toString(),"text/html;charset=gb2312");
mailSession.setDebug(sessionDebug);
Transport transport = mailSession.getTransport("smtp");
transport.connect((String)props.get("smtp.smartdotweb.com"),"weicheng.gao@smartdotweb.com","we4ga3");
transport.sendMessage(msg,msg.getRecipients(Message.RecipientType.TO));
System.out.println("郵件發送成功");
transport.close();
}Top
2 楼weichenggao(一万年太久,只争朝夕)回复于 2003-12-03 15:07:08 得分 0
那位路过的好心人给看看,谢谢拉!!
Top
3 楼sunshadow1981(影子)回复于 2003-12-03 17:18:50 得分 20
哈哈,我看了,看不明白Top
4 楼weichenggao(一万年太久,只争朝夕)回复于 2003-12-03 17:56:26 得分 0
顶一下!
Top
5 楼blueice2002(蓝冰)回复于 2003-12-03 17:58:32 得分 0
up一下,不明白Top
6 楼weichenggao(一万年太久,只争朝夕)回复于 2003-12-04 09:51:01 得分 0
请各位高手指点一下!
Top
7 楼popyuan821(无)回复于 2003-12-04 10:18:14 得分 10
我就是用了网上的方法,主题乱码就解决了!你可能是其他的地方写的有问题了Top
8 楼Acylas(Acylas)回复于 2003-12-04 10:28:09 得分 20
msg.setSubject("=?GB2312?B?"+enc.encode(subject.getBytes())+"?=");
"=?GB2312?B?"+?
怎么有这几个东西的,有问号,你发之前已经是乱码的数据Top
9 楼Acylas(Acylas)回复于 2003-12-04 11:15:25 得分 50
我给个方法你看看吧
private String sendEmail(String strHost, String strProtocol, String strMailTo, String strMailFrom, String strTitle, String strSubTitle, String strBody){
try {
Properties props = System.getProperties();
props.put("mail.host",strHost);
props.put("mail.transport.protocol", strProtocol);
if (props.getProperty("user.region") != null && props.getProperty("user.region").equals("TW")
&& props.getProperty("user.language") != null && props.getProperty("user.language").equals("zh")){ props.setProperty("file.encoding","BIG5");
}
}
session = javax.mail.Session.getDefaultInstance(props, null);
session.setDebug(false);
msg = new javax.mail.internet.MimeMessage(session);
msg.setSubject(strTitle);
msg.setSentDate(new Date());
msg.setText(strBody);
msg.setFrom(new javax.mail.internet.InternetAddress(strMailFrom));
javax.mail.internet.InternetAddress[] address = {new javax.mail.internet.InternetAddress(strMailTo)};
javax.mail.Transport.send(msg, address);
return "successfully";
}catch(Exception e){e.printStackTrace();return e.getMessage();}
}Top




