/** * 以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; }