javamail保存附件时报Java.io.IOexception,大家帮忙看看怎么回事

iamrighthere 2012-12-06 05:21:33
这是出错信息:
java.io.IOException
at javax.mail.internet.MimePartDataSource.getInputStream(MimePartDataSource.java:70)
at javax.activation.DataHandler.getInputStream(DataHandler.java:220)
at javax.mail.internet.MimeBodyPart.getInputStream(MimeBodyPart.java:492)

这是源码:
public String saveAttachMent(Part part) throws Exception {
String fileName = "";
if (part.isMimeType("multipart/*")) {
Multipart mp = (Multipart) part.getContent();
for (int i = 0; i < mp.getCount(); i++) {
BodyPart mpart = mp.getBodyPart(i);
String disposition = mpart.getDisposition();
if ((disposition != null) && ((disposition.equals(Part.ATTACHMENT)))) {
fileName = mpart.getFileName();
if (fileName != null) {
fileName = MimeUtility.decodeText(fileName);
}
System.out.println("================"+fileName);
InputStream in = mpart.getInputStream();。。。。。。。。。。。在这里报错的
saveFile(fileName, in);
} else if (mpart.isMimeType("multipart/*")) {
saveAttachMent(mpart);
} else {
fileName = mpart.getFileName();
if (fileName != null) {
fileName = MimeUtility.decodeText(fileName);
saveFile(fileName, mpart.getInputStream());
}
}
}
} else if (part.isMimeType("message/rfc822")) {
saveAttachMent((Part) part.getContent());
}
return fileName;
}
...全文
482 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
猪公公 2012-12-16
  • 打赏
  • 举报
回复
package com.util.mailtest; import java.io.*; import java.util.Properties; import javax.activation.DataHandler; import javax.activation.DataSource; import javax.activation.FileDataSource; import javax.mail.Session; import javax.mail.internet.MimeBodyPart; import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMultipart; public class Demo3 { /** * @param args */ public static void main(String[] args) throws Exception{ // TODO Auto-generated method stub Session session = Session.getInstance(new Properties()); MimeMessage msg = new MimeMessage(session); msg.setSubject("男人真的靠不住么?"); MimeMultipart msgMultipar = new MimeMultipart("mixed"); msg.setContent(msgMultipar); MimeBodyPart attch1 = new MimeBodyPart(); //附件1 MimeBodyPart attch2 = new MimeBodyPart(); //附件2 MimeBodyPart content = new MimeBodyPart(); //正文 msgMultipar.addBodyPart(attch1); msgMultipar.addBodyPart(attch2); msgMultipar.addBodyPart(content); DataSource ds1 = new FileDataSource( "C:\\Users\\Administrator\\Desktop\\gx.txt" ); DataHandler dh1 = new DataHandler(ds1); attch1.setDataHandler(dh1); //添加附件1、 attch1.setFileName("gx.txt"); DataSource ds2 = new FileDataSource( "C:\\Users\\Administrator\\Desktop\\2.jpg" ); DataHandler dh2 = new DataHandler(ds2); attch1.setDataHandler(dh2); //添加附件2 attch2.setFileName("2.jpg"); MimeMultipart bodyMultipar = new MimeMultipart("related"); content.setContent(bodyMultipar); MimeBodyPart htmlPart = new MimeBodyPart(); MimeBodyPart gifPart = new MimeBodyPart(); bodyMultipar.addBodyPart(htmlPart); bodyMultipar.addBodyPart(gifPart); DataSource gifds = new FileDataSource( "C:\\Users\\Administrator\\Desktop\\3.jpg" ); DataHandler gifdh = new DataHandler(gifds); gifPart.setDataHandler(gifdh); gifPart.setHeader("Content-Location", "http://www.itcast.cn/3.gif"); htmlPart.setContent("这可是我自己用程序生成的邮件哦" ,"text/html;charset=gbk"); msg.saveChanges(); OutputStream ips = new FileOutputStream("D:\\demo3.eml"); msg.writeTo(ips); ips.close(); } } 保存时出了这个错,但是能够保存成功,只是里面的图片附件显示不了,而且txt附件也是乱码,求大家解决?? Exception in thread "main" java.io.IOException: No content at javax.mail.internet.MimePartDataSource.getInputStream(MimePartDataSource.java:108) at javax.activation.DataHandler.writeTo(DataHandler.java:305) at javax.mail.internet.MimeBodyPart.writeTo(MimeBodyPart.java:1383) at javax.mail.internet.MimeBodyPart.writeTo(MimeBodyPart.java:852) at javax.mail.internet.MimeMultipart.writeTo(MimeMultipart.java:453) at com.sun.mail.handlers.multipart_mixed.writeTo(multipart_mixed.java:98) at javax.activation.ObjectDataContentHandler.writeTo(DataHandler.java:884) at javax.activation.DataHandler.writeTo(DataHandler.java:317) at javax.mail.internet.MimeBodyPart.writeTo(MimeBodyPart.java:1383) at javax.mail.internet.MimeMessage.writeTo(MimeMessage.java:1743) at javax.mail.internet.MimeMessage.writeTo(MimeMessage.java:1719) at com.util.mailtest.Demo3.main(Demo3.java:72)
iamrighthere 2012-12-06
  • 打赏
  • 举报
回复
就这些错误,没了
clariones 2012-12-06
  • 打赏
  • 举报
回复
异常除了堆栈,应该还有message吧,一起贴上来呗

62,614

社区成员

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

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