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