javamail 发送附件

/**  
      * 以HTML格式发送邮件  
      * @param mailInfo 待发送的邮件信息  
      */   
    public static boolean sendHtmlMail(MailSenderInfo mailInfo){   
      // 判断是否需要身份认证   
      MyAuthenticator authenticator = null;  
      Properties pro = mailInfo.getProperties();  
      //如果需要身份认证,则创建一个密码验证器    
      if (mailInfo.isValidate()) {   
        authenticator = new MyAuthenticator(mailInfo.getUserName(), mailInfo.getPassword());  
      }   
      // 根据邮件会话属性和密码验证器构造一个发送邮件的session
      Session sendMailSession ;
      if(authenticator!=null){
          sendMailSession  = Session.getDefaultInstance(pro,authenticator); 
      }else{
          sendMailSession  = Session.getDefaultInstance(pro);
      }
      
      try {   
      // 根据session创建一个邮件消息   
      Message mailMessage = new MimeMessage(sendMailSession);   
      // 创建邮件发送者地址   
      Address from = new InternetAddress(mailInfo.getFromAddress());   
      // 设置邮件消息的发送者   
      mailMessage.setFrom(from);   
      // 创建邮件的接收者地址,并设置到邮件消息中   
      Address to = new InternetAddress(mailInfo.getToAddress());   
      // Message.RecipientType.TO属性表示接收者的类型为TO   
      mailMessage.setRecipient(Message.RecipientType.TO,to);   
      // 设置邮件消息的主题   
      mailMessage.setSubject(mailInfo.getSubject());   
      // 设置邮件消息发送的时间   
      mailMessage.setSentDate(new Date());   
      // MiniMultipart类是一个容器类,包含MimeBodyPart类型的对象   
      Multipart mainPart = new MimeMultipart();   
      // 创建一个包含HTML内容的MimeBodyPart   
      BodyPart html = new MimeBodyPart();   
      // 设置HTML内容   
      html.setContent(mailInfo.getContent(), "text/html; charset=GBK");   
      mainPart.addBodyPart(html);
      
      if(mailInfo.getAttachFileNames()!=null && mailInfo.getAttachFileNames().length>0){
          BodyPart bpart = new MimeBodyPart();
          String[] filenames = mailInfo.getAttachFileNames();
          for(int i=0;i<filenames.length;i++){
              String filename = filenames[i];
              File file = new File(filename);
              System.out.println(file.getName());
              if(!file.exists()){
                  System.err.println("文件不存在!");
                  throw new NullPointerException();
              }
              FileDataSource fds=new FileDataSource(filename); //得到数据源  
              bpart.setDataHandler(new DataHandler(fds));
              bpart.setFileName(MimeUtility.encodeText(filename, "GBK",null));//解决乱码
              mainPart.addBodyPart(bpart);
          }
      }
      
      // 将MiniMultipart对象设置为邮件内容   
      mailMessage.setContent(mainPart);   
      // 发送邮件   
      Transport.send(mailMessage);   
      System.out.println("以HTML格式发送邮件完毕!");
      return true;   
      } catch (MessagingException ex) {   
          ex.printStackTrace();   
      } catch (UnsupportedEncodingException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }   
      return false;   
    } 

你可能感兴趣的:(javamail 发送附件)