java mail imap 保存附件问题

rain9355 2014-07-16 05:02:17
	private static void saveFile(InputStream in, String destDir, String fileName)
throws Exception {
String osName = System.getProperty("os.name");
String storedir = destDir;
String separator = "";
if (osName == null)
osName = "";
if (osName.toLowerCase().indexOf("win") != -1) {
separator = "/";
if (storedir == null || storedir.equals(""))
storedir = "c:/tmp";
} else {
separator = "/";
storedir = "/tmp";

}
File storefile = new File(storedir + separator + fileName);
System.out.println("storefile's path: " + storefile.toString());

BufferedOutputStream bos = null;
BufferedInputStream bis = null;
try {
bos = new BufferedOutputStream(new FileOutputStream(storefile));
bis = new BufferedInputStream(in);
int c;
while ((c = bis.read()) != -1) {
bos.write(c);
bos.flush();
}
} catch (Exception exception) {
exception.printStackTrace();
throw new Exception("文件保存失败!");
} finally {
bos.close();
bis.close();
}
}

在保存附件的时候老是报错,
java.io.IOException: Error in encoded stream: found valid base64 character after a padding character (=), the 10 most recent characters were: "\r\n\tname="1"
at com.sun.mail.util.BASE64DecoderStream.decode(BASE64DecoderStream.java:284)
at com.sun.mail.util.BASE64DecoderStream.read(BASE64DecoderStream.java:135)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
at java.io.BufferedInputStream.read(BufferedInputStream.java:235)
at com.sgcc.pms.framework.base.util.POP3ReceiveMail.saveFile(POP3ReceiveMail.java:434)
at com.sgcc.pms.framework.base.util.POP3ReceiveMail.saveAttachment(POP3ReceiveMail.java:369)
at com.sgcc.pms.framework.base.util.POP3ReceiveMail.parseMessage(POP3ReceiveMail.java:104)
at com.sgcc.pms.framework.base.util.IMAPReceiveMail.main(IMAPReceiveMail.java:84)
Exception in thread "main" java.lang.Exception: 文件保存失败!
at com.sgcc.pms.framework.base.util.POP3ReceiveMail.saveFile(POP3ReceiveMail.java:440)
at com.sgcc.pms.framework.base.util.POP3ReceiveMail.saveAttachment(POP3ReceiveMail.java:369)
at com.sgcc.pms.framework.base.util.POP3ReceiveMail.parseMessage(POP3ReceiveMail.java:104)
at com.sgcc.pms.framework.base.util.IMAPReceiveMail.main(IMAPReceiveMail.java:84)
在解密的时候
...全文
299 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
fly707822 2015-08-29
  • 打赏
  • 举报
回复
楼主 你是使用imap 接收和发送文件的?
rain9355 2014-07-16
  • 打赏
  • 举报
回复
好像imap在接收邮件的时候InputStream是空的,不知道怎么解决
wyx100 2014-07-16
  • 打赏
  • 举报
回复
引用 3 楼 rain9355 的回复:
使用pop3接收的话附件是可以正常接收保存的
rain9355 2014-07-16
  • 打赏
  • 举报
回复
使用pop3接收的话附件是可以正常接收保存的
rain9355 2014-07-16
  • 打赏
  • 举报
回复
我这个是接收的,发送的是序列化后的文件和压缩文件。发送是没有问题的
tony4geek 2014-07-16
  • 打赏
  • 举报
回复
基于JavaMail的邮件收发系统是一种用于发送和接收电子邮件的应用程序,它基于JavaMail API来实现与邮件服务器的通信,并提供用户界面来进行邮件的管理和操作。以下是对该系统实现的描述: 用户界面: 系统提供了用户友好的界面,使用户能够方便地登录、查看、发送和管理邮件。 用户界面可能采用图形用户界面(GUI)或者Web界面,让用户能够通过桌面应用程序或者Web浏览器进行操作。 邮件发送功能: 用户可以通过系统界面编写邮件、设置收件人、添加附件等,并将邮件发送到指定的邮件服务器。 系统利用JavaMail API来构建和发送邮件,通过SMTP(Simple Mail Transfer Protocol)协议与邮件服务器进行通信,将邮件传输到目标邮箱。 邮件接收功能: 系统能够从用户指定的邮箱服务器上接收邮件,并将邮件内容显示在用户界面上。 使用JavaMail API中的POP3(Post Office Protocol 3)或者IMAP(Internet Message Access Protocol)协议来从邮件服务器上下载邮件,并将其解析成可读的格式供用户查看。 邮件管理功能: 用户可以在系统界面上对收件箱、发件箱、已发送邮件等进行管理,如查看、删除、标记、归档等操作。 系统可能提供对邮件进行分类、过滤和搜索的功能,以便用户能够更有效地管理大量的邮件。 安全性和认证: 系统应该提供安全的用户认证机制,确保只有经过授权的用户能够访问和操作邮件。 使用JavaMail API时,可以结合Java的安全机制,如SSL(Secure Sockets Layer)或者TLS(Transport Layer Security)来保护邮件的传输过程中的数据安全。 附件处理: 系统应支持发送和接收带有附件的邮件,并能够对附件进行上传、下载和预览等操作。 通过以上实现,基于JavaMail的邮件收发系统能够为用户提供便捷、安全的邮件收发服务,满足用户在日常工作和生活中的邮件通信需求。

81,092

社区成员

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

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