关于JAVAMAIL的附件下载

呆萌程序员 2013-07-06 07:47:28
我的代码是这样的

@RequestMapping("four_download")
public void fourDownload(HttpSession session, HttpServletResponse response,HttpServletRequest request) throws Exception
{
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
//获得当前邮件用户
JamesUser juser = JamesUserUtil.getJamesUser(session);
//获得邮件用户具体信息 获得密码
UserInfo userinfo = JamesUserUtil.getUserInfo(session);
//获得邮件ID
long uid = Long.parseLong(request.getParameter("uid"));
//获得邮箱类型
int folderType = Integer.parseInt(request.getParameter("folderType"));
//获得附件的编号
int bodyId = Integer.parseInt(request.getParameter("bodyId"));
//获得文件名
String fileName = request.getParameter("fileName");

fileName=java.net.URLDecoder.decode(fileName,"UTF-8");

ReceiveMail mail = new ReceiveMail(juser.getUserName(), userinfo.getUserPass());// 初始化接收邮件参数

IMAPFolder folder = mail.openFolder(userReceiveMailService.folderType(folderType), Folder.READ_WRITE);

Message message = folder.getMessageByUID(uid);

response.setHeader("Content-Disposition", "attachment;filename="+fileName);

Multipart multipart = (Multipart) message.getContent();

BodyPart bodyPart = multipart.getBodyPart(bodyId);

InputStream input = bodyPart.getInputStream();
int temp = 0;
while((temp = input.read()) != -1){
out.write(temp);
}
//mail.handleMultipart(message);
//userReceiveMailService.attachmentDownLoad(juser.getUserName(), userinfo.getUserPass(),1, uid, fileName);
}


为什么下载下来的文件的内容是空的?都是邮件PART的编码格式的
困扰我三天了 求解脱啊。。。。
...全文
104 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
autumn134 2013-07-07
  • 打赏
  • 举报
回复
建议debug跟下bodyPart是否有数据、out.write到底写了多少字节,这一堆对象套对象的,用眼看有点儿费劲。。

23,404

社区成员

发帖
与我相关
我的任务
社区描述
Java 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧