我用javamail发送还附件的邮件,写好之后,用JUnit测都是正常的,但是web程序运行起来,页面调用之后,发出去的,都是没有附件的乱码邮件。设置附件部分代码 //设置信件的附件
mdp=new MimeBodyPart();
FileDataSource fds=new FileDataSource(URI);
DataHandler dh=new DataHandler(fds);
mdp.setFileName((MimeUtility.encodeText("javamail本地文件附件.xls", "GBK", "B")));
mdp.setDataHandler(dh);
mm.addBodyPart(mdp);
message.setContent(mm);
JUnit测试代码 MailUtil.sendMail("[email protected]", "java测试邮件", "java测试邮件","D:\\test.xml");这样调就是正常的,但在web程序中传入同样的值,就是乱码,乱码类似如下,而且也没附件了:------=_Part_20_21345486.1260347889515
Content-Type: text/html; charset=GBK
Content-Transfer-Encoding: base64v9q+trHkuPzQxc+i
------=_Part_20_21345486.1260347889515
Content-Type: application/octet-stream; name="=?GBK?B?amF2YW1haWyxvrXYzsS8/ri9vP4ueGxz?="
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename="=?GBK?B?amF2YW1haWyxvrXYzsS8/ri9vP4ueGxz?="0M8R4KGxGuEAAAAAAAAAAAAAAAAAAAAAOwADAP7/CQAGAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAA
EAAABgAAAAEAAAD+////AAAAAAcAAAD/////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////9S
mdp=new MimeBodyPart();
FileDataSource fds=new FileDataSource(URI);
DataHandler dh=new DataHandler(fds);
mdp.setFileName((MimeUtility.encodeText("javamail本地文件附件.xls", "GBK", "B")));
mdp.setDataHandler(dh);
mm.addBodyPart(mdp);
message.setContent(mm);
JUnit测试代码 MailUtil.sendMail("[email protected]", "java测试邮件", "java测试邮件","D:\\test.xml");这样调就是正常的,但在web程序中传入同样的值,就是乱码,乱码类似如下,而且也没附件了:------=_Part_20_21345486.1260347889515
Content-Type: text/html; charset=GBK
Content-Transfer-Encoding: base64v9q+trHkuPzQxc+i
------=_Part_20_21345486.1260347889515
Content-Type: application/octet-stream; name="=?GBK?B?amF2YW1haWyxvrXYzsS8/ri9vP4ueGxz?="
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename="=?GBK?B?amF2YW1haWyxvrXYzsS8/ri9vP4ueGxz?="0M8R4KGxGuEAAAAAAAAAAAAAAAAAAAAAOwADAP7/CQAGAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAA
EAAABgAAAAEAAAD+////AAAAAAcAAAD/////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////9S
解决方案 »
- 三大框架整合中出现的问题!请教各位大神有什么解决方法!
- 关于FTP将操作系统端口耗尽的解决办法
- 所有分求救There is no Action mapped for namespace / and action name
- 需要java程序员的公司来看看
- 麻烦大家给介绍一本spring的书
- 请问谁又没有用JAVA开发过web上的视频聊天室?
- 对ssl熟悉的朋友,有关ssl的问题....
- 小日本真他妈的不是人!
- 急!!急!!急!!各位高手请指点!!!!!
- 服务端代码如何兼容各个版本的客户端?
- window.open()失效
- 关于HttpServletRequest接口的getRequestDispatcher(url)方法的问题
http://howsun.blog.sohu.com/129043957.html
是同类的,现在我改用apache的email包,都写死的,JUnit测试就成功,web程序里面就不能连到服务器,郁闷了
代码如下: SimpleEmail email;
try {
email = new SimpleEmail();
email.setHostName("smtp.foxmail.com");
// email.setSmtpPort(465);
email.setCharset("UTF-8");
email.setFrom("[email protected]");
email.setAuthentication("homlly","xxxxxxxx");
email.addTo("[email protected]");
email.setSubject("java测试邮件");
email.setMsg("这是一个java测试邮件");
email.send();
logger.debug("邮件件发送成功");
} catch (EmailException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
EAAABgAAAAEAAAD+////AAAAAAcAAAD/////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////9S ?
这些乱码??可以肯定的告诉你不是,这些是被BASE64Decoder 处理过D:\\test.xml的文件内容
你可以随便找个word,xls文件测试一下BASE64Decoder decoder = new BASE64Decoder(); public String ioToBase64(String strPath) throws IOException {
String fileName = strPath; // 源文件
String strBase64 = null;
try {
InputStream in = new FileInputStream(fileName);
// in.available()返回文件的字节长度
byte[] bytes = new byte[in.available()];
// 将文件中的内容读入到数组中
in.read(bytes);
strBase64 = new BASE64Encoder().encode(bytes); // 将字节流数组转换为字符串
in.close();
} catch (FileNotFoundException fe) {
fe.printStackTrace();
} catch (IOException ioe) {
ioe.printStackTrace();
}
System.out.println("str:"+strBase64);
return strBase64;
}