这是出错信息:
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;
}

解决方案 »

  1.   

    异常除了堆栈,应该还有message吧,一起贴上来呗
      

  2.   

    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)