javamail出错:com.sun.mail.util.FolderClosedIOException

yutaoshen 2012-11-29 04:05:30
使用javamail读取邮件附件 全是TXT文件 每个邮件大概80-90个附件,一共800多封邮件,读取一定量时 会报如下异常:
com.sun.mail.util.FolderClosedIOException
at com.sun.mail.imap.IMAPInputStream.forceCheckExpunged(IMAPInputStream.java:100)
at com.sun.mail.imap.IMAPInputStream.fill(IMAPInputStream.java:150)
at com.sun.mail.imap.IMAPInputStream.read(IMAPInputStream.java:182)
at java.io.FilterInputStream.read(FilterInputStream.java:66)
at java.io.PushbackInputStream.read(PushbackInputStream.java:122)
at com.sun.mail.util.QPDecoderStream.read(QPDecoderStream.java:86)
at com.sun.mail.util.QPDecoderStream.read(QPDecoderStream.java:165)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
at java.io.BufferedInputStream.read(BufferedInputStream.java:237)
at com.genertech.sahm.smart.parse.utils.JavaMailUtil.saveFile(JavaMailUtil.java:137)
at com.genertech.sahm.smart.parse.utils.JavaMailUtil.getContentWithAttach(JavaMailUtil.java:42)
at com.genertech.sahm.smart.parse.service.impl.ReceiveMailServiceImpl.receiveMail(ReceiveMailServiceImpl.java:76)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.springframework.util.MethodInvoker.invoke(MethodInvoker.java:273)
at org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean$MethodInvokingJob.executeInternal(MethodInvokingJobDetailFactoryBean.java:311)
at org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:113)
at org.quartz.core.JobRunShell.run(JobRunShell.java:213)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:557)
java.lang.Exception: 文件保存失败!
at com.genertech.sahm.smart.parse.utils.JavaMailUtil.saveFile(JavaMailUtil.java:143)
at com.genertech.sahm.smart.parse.utils.JavaMailUtil.getContentWithAttach(JavaMailUtil.java:42)
at com.genertech.sahm.smart.parse.service.impl.ReceiveMailServiceImpl.receiveMail(ReceiveMailServiceImpl.java:76)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.springframework.util.MethodInvoker.invoke(MethodInvoker.java:273)
at org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean$MethodInvokingJob.executeInternal(MethodInvokingJobDetailFactoryBean.java:311)
at org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:113)
at org.quartz.core.JobRunShell.run(JobRunShell.java:213)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:557)
------------------第5封邮件----------------------------
2012-11-29 15:54:17,008 [receiveMailQuartzScheduler_Worker-1] ERROR org.quartz.core.JobRunShell -Job DEFAULT.receiveMailCronJobDetail threw an unhandled Exception:
org.springframework.scheduling.quartz.JobMethodInvocationFailedException: Invocation of method 'receiveMail' on target class [class com.genertech.sahm.smart.parse.service.impl.ReceiveMailServiceImpl] failed; nested exception is javax.mail.FolderClosedException
at org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean$MethodInvokingJob.executeInternal(MethodInvokingJobDetailFactoryBean.java:320)
at org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:113)
at org.quartz.core.JobRunShell.run(JobRunShell.java:213)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:557)
Caused by: javax.mail.FolderClosedException
at com.sun.mail.imap.IMAPMessage.getProtocol(IMAPMessage.java:145)
at com.sun.mail.imap.IMAPMessage.loadFlags(IMAPMessage.java:1377)
at com.sun.mail.imap.IMAPMessage.getFlags(IMAPMessage.java:877)
at com.genertech.sahm.smart.parse.service.impl.ReceiveMailServiceImpl.receiveMail(ReceiveMailServiceImpl.java:70)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.springframework.util.MethodInvoker.invoke(MethodInvoker.java:273)
at org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean$MethodInvokingJob.executeInternal(MethodInvokingJobDetailFactoryBean.java:311)
... 3 more
2012-11-29 15:54:17,009 [receiveMailQuartzScheduler_Worker-1] ERROR org.quartz.core.ErrorLogger -Job (DEFAULT.receiveMailCronJobDetail threw an exception.
org.quartz.SchedulerException: Job threw an unhandled exception. [See nested exception: org.springframework.scheduling.quartz.JobMethodInvocationFailedException: Invocation of method 'receiveMail' on target class [class com.genertech.sahm.smart.parse.service.impl.ReceiveMailServiceImpl] failed; nested exception is javax.mail.FolderClosedException]
at org.quartz.core.JobRunShell.run(JobRunShell.java:224)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:557)
Caused by: org.springframework.scheduling.quartz.JobMethodInvocationFailedException: Invocation of method 'receiveMail' on target class [class com.genertech.sahm.smart.parse.service.impl.ReceiveMailServiceImpl] failed; nested exception is javax.mail.FolderClosedException
at org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean$MethodInvokingJob.executeInternal(MethodInvokingJobDetailFactoryBean.java:320)
at org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:113)
at org.quartz.core.JobRunShell.run(JobRunShell.java:213)
... 1 more
Caused by: javax.mail.FolderClosedException
at com.sun.mail.imap.IMAPMessage.getProtocol(IMAPMessage.java:145)
at com.sun.mail.imap.IMAPMessage.loadFlags(IMAPMessage.java:1377)
at com.sun.mail.imap.IMAPMessage.getFlags(IMAPMessage.java:877)
at com.genertech.sahm.smart.parse.service.impl.ReceiveMailServiceImpl.receiveMail(ReceiveMailServiceImpl.java:70)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.springframework.util.MethodInvoker.invoke(MethodInvoker.java:273)
at org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean$MethodInvokingJob.executeInternal(MethodInvokingJobDetailFactoryBean.java:311)
... 3 more
...全文
861 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
yutaoshen 2012-11-29
  • 打赏
  • 举报
回复
 public static void saveFile(String fileName, InputStream in)
			throws Exception {
    	
		String separator = File.separator;
		
		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 {
			if(bos!=null){
				bos.close();
			}
			if(bis!=null){
				bis.close();
			}
		}
	}
前面发错 ,这个读取邮件附件的代码
jxplus 2012-11-29
  • 打赏
  • 举报
回复
是否线程方面的问题,加锁试试调一下。
yutaoshen 2012-11-29
  • 打赏
  • 举报
回复

public List readReport(File file) {
		List list=new ArrayList();
		BufferedReader reader=null;
		try {
			if(file.exists()&&file.isFile()){
				reader=new BufferedReader(new FileReader(file));
				String data=null;
				while((data=reader.readLine())!=null){
					Pattern pattern = Pattern.compile(Consts.TITLE_REPORT_DATETIME);
					Matcher matcher = pattern.matcher(data);
					if(!matcher.matches()){
						list.add(data);
					}
				}
				
			}
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}finally{
			if(reader!=null){
				try {
					reader.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
			
		}
		return list;
	}


以上是读取邮件附件
熟悉项目开发过程中SSM框架、JSP、Mysql使用,知道各技术之间的如何衔接; 该课程主要涉及到的技术有:  项目涉及的技术:  1、前端:jsp、css、javascript、jQuery(js框架)、bootstrap框架 2、后台:Spring MVC、Spring、Mybatis框架、javaMail进行邮件发送、jstl 、jstl自定义分页标签、代码生成器等 3、数据库:Mysql 4、服务器:Tomcat项目开发涉及的功能: 1、项目以及数据库搭建2、用户登录、退出3、用户注册、邮件发送4、首页商品信息页面搭建以及查询功能实现5、商品明细查看,商品修改,商品下架7、商品类型管理8、订单管理9、代码机器人使用等等其他实战项目:java项目实战之电商系统全套(前台和后台)(java毕业设计ssm框架项目)https://edu.csdn.net/course/detail/25771 java项目之oa办公管理系统(java毕业设计)https://edu.csdn.net/course/detail/23008 java项目之hrm人事管理项目(java毕业设计)https://edu.csdn.net/course/detail/23007 JavaWeb项目实战之点餐系统前台https://edu.csdn.net/course/detail/20543 JavaWeb项目实战之点餐系统后台https://edu.csdn.net/course/detail/19572 JavaWeb项目实战之宿舍管理系统(Java毕业设计含源码)https://edu.csdn.net/course/detail/26721 JavaWeb项目实战之点餐系统全套(前台和后台)https://edu.csdn.net/course/detail/20610 java项目实战之电子商城后台(java毕业设计SSM框架项目)https://edu.csdn.net/course/detail/25770 java美妆商城项目|在线购书系统(java毕业设计项目ssm版)https://edu.csdn.net/course/detail/23989 系统学习课程:JavaSE基础全套视频(环境搭建 面向对象 正则表达式 IO流 多线程 网络编程 java10https://edu.csdn.net/course/detail/26941 Java Web从入门到电商项目实战挑战万元高薪(javaweb教程)https://edu.csdn.net/course/detail/25976其他素材版(毕业设计或课程设计)项目:点击老师头像进行相关课程学习

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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