javamail接收邮件时可以得到大小,但在发送邮件时用getsize()得到大小是-1,不知道怎么回事,请高人指点一下!

解决方案 »

  1.   

    Properties props = new Properties();
    props.put("mail.smtp.host", host);
    // 需要经过授权,也就是用户名和密码的校验,这样才能通过验证(一定要有这一条)
    props.put("mail.smtp.auth", "true"); // 用刚刚设置好的props对象构建一个session
    Session session = Session.getDefaultInstance(props);
    session.setDebug(true); // 用session为参数定义消息对象
    MimeMessage message = new MimeMessage(session);
    try {
    // 加载发件人地址
    message.setFrom(new InternetAddress(from));
    // 加载收件人地址
    if (!to.equals("")) {        
    message.addRecipient(Message.RecipientType.TO,
    new InternetAddress(to));
    }
    // 加载抄送地址  
    if (!copyAddress.equals("")) {
    message.addRecipient(Message.RecipientType.CC,
    new InternetAddress(copyAddress));
    }
    // 加载密送地址          
    if (!secretAddress.equals("")) {
    message.addRecipient(Message.RecipientType.BCC,
    new InternetAddress(secretAddress));
    }
    // 加载标题
    message.setSubject(subject); Multipart multipart = new MimeMultipart();
    // 设置邮件的文本内容
    BodyPart contentPart = new MimeBodyPart();
    contentPart.setContent(mailtext,"text/html;charset=GBK"); multipart.addBodyPart(contentPart);

    /**
     * 添加附件
     */
    if (affix.length>0) {
    for (int i = 0; i < affix.length; i++) {
    BodyPart messageBodyPart = new MimeBodyPart();  
    DataSource source = new FileDataSource(ABMSystemInfo.PROJECT_PATH+affix[i]);
    // 添加附件的内容
    messageBodyPart.setDataHandler(new DataHandler(source));
    // 添加附件的标题
    sun.misc.BASE64Encoder enc = new sun.misc.BASE64Encoder();
    messageBodyPart.setFileName("=?GBK?B?"
    + enc.encode(affixName[i].getBytes()) + "?=");
    multipart.addBodyPart(messageBodyPart);
    }
    }
    // 将multipart对象放到message中
    message.setContent(multipart);  // 保存邮件
    message.saveChanges(); sendmailsize = message.getSize();
    这是部分代码
      

  2.   

    在发送程序里,getSize()方法好象没用了