package com.asiacom.Email; import javax.mail.Authenticator; import javax.mail.PasswordAuthentication; /** * 用戶名和密碼的驗證 */ public class MailAuthenticator extends Authenticator{ private String username="XXX@XX.com"; private String password="XXX"; public MailAuthenticator() { super(); } /** * 設置驗證的用戶名和密碼 */ public MailAuthenticator(String userName , String password) { super(); this.username = userName; this.password = password; } protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(this.username,this.password); } } package com.asiacom.Email; import java.util.Date; public class EmailMessage { /** * 郵件的信息,能夠本身進行設置。 * 爲了方便直接所有設置爲靜態 */ //收件人郵箱 public static String TO = "XXX@XXX"; //發件人郵箱 public static String FROM = "XXX@XX.com"; public static String PASSWORD=""; //名字 public static String FROM_NAME = "XXX"; //抄送人 (多人時以‘,’隔開) public static String CC="XXX@XX.com"; //密送 public static String BCC="XXX@XX.com"; //郵件的類型 public static String Email_Content = "text/plain"; //郵件標題 public static String Email_Subject = "Test Email With JavaMail"; //郵件頭 public static String Email_Header = "This Is Email Header"; //內容 public static String Email_Body = "<a href=\"http://www.asiacom.tk\">This Is Email Body</a>"; //服務器 好比163的能夠設置爲smtp.163.com public static String Email_Host = "smtp.XXX.com"; //發送時間 public static Date sendDate = new Date(); //是否須要驗證用戶名和密碼 public static boolean validate = true; } package com.asiacom.Email; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Properties; import javax.activation.DataHandler; import javax.activation.DataSource; import javax.activation.FileDataSource; import javax.mail.Address; import javax.mail.Authenticator; import javax.mail.BodyPart; import javax.mail.Message; import javax.mail.Multipart; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeBodyPart; import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMultipart; public class SendEmail { /** * 發送普通郵件 * @throws Exception */ public void doSendNormalMail(){ //獲取系統環境 Properties prop = new Properties(); Authenticator auth = null; //判斷髮送郵件是否須要驗證 if (EmailMessage.validate){ //郵件服務器認證 用戶名和密碼 auth = new MailAuthenticator(); } //添加必要的信息 prop.put("mail.smtp.host", EmailMessage.Email_Host); prop.put("mail.smtp.auth", "true"); //設置對話和郵件服務器進行通信 Session session = Session.getDefaultInstance(prop, auth); //在控制檯顯示Debug信息 session.setDebug(true); //設置郵件對象 Message message = new MimeMessage(session); try{ //設置郵件主題 message.setSubject(EmailMessage.Email_Subject); //設置郵件標題 message.setHeader("Header", EmailMessage.Email_Header); //設置發送時間 message.setSentDate(EmailMessage.sendDate); //設置發信人地址 和 名字 Address address = new InternetAddress(EmailMessage.FROM, EmailMessage.FROM_NAME); //把發件人信息添加到信息中 message.setFrom(address); //設置發件人地址 Address toAddress = new InternetAddress(EmailMessage.TO); //設置接收人地址 message.setRecipient(Message.RecipientType.TO, toAddress); //設置多個收件人地址 //message.addRecipient(Message.RecipientType.TO,new InternetAddress("XX@XX.com")); /* * 發送多人 List to=new ArrayList(); to.add(0, "XXXg@XX"); to.add(1,"XX@XX.com"); String toList = null; toList = getMailList(to); InternetAddress[] iaToList = InternetAddress().parse(toList); message.setRecipients(Message.RecipientType.TO, iaToList); // 收件人 */ //抄送 InternetAddress[] iaToListcs = InternetAddress.parse(EmailMessage.CC); message.setRecipients(Message.RecipientType.CC, iaToListcs); // 抄送人 //密送 InternetAddress[] iaToListms = InternetAddress.parse(EmailMessage.BCC); message.setRecipients(Message.RecipientType.BCC, iaToListms); // 密送人 //設置郵件格式 message.setContent("Content", EmailMessage.Email_Content); //設置郵件內容 必須在設置文件格式後面 message.setText(EmailMessage.Email_Body); //保存上面添加的信息 message.saveChanges(); //發送郵件 System.out.println("sendNormalEmail() 開始發送郵件..."); Transport.send(message); System.out.println("發送成功!"); } catch (Exception e) { System.out.println("出現錯誤"); e.printStackTrace(); } } /** * 發送HTML格式的郵件 */ public void doSendHtmlMail() { //獲取系統環境 Properties prop = new Properties(); Authenticator auth = null; if (EmailMessage.validate){ //郵件服務器認證 用戶名和密碼 auth = new MailAuthenticator(); } //添加必要的信息 prop.put("mail.smtp.host", EmailMessage.Email_Host); prop.put("mail.smtp.auth", "true"); //設置對話和郵件服務器進行通信 Session session = Session.getDefaultInstance(prop, auth); //設置郵件對象 Message message = new MimeMessage(session); try { //設置郵件主題 message.setSubject(EmailMessage.Email_Subject); //設置郵件標題 message.setHeader("Header", EmailMessage.Email_Header); //設置發送時間 message.setSentDate(EmailMessage.sendDate); //設置發信人地址 和 名字 Address address = new InternetAddress(EmailMessage.FROM, EmailMessage.FROM_NAME); //把發件人信息添加到信息中 message.setFrom(address); //設置發件人地址 Address toAddress = new InternetAddress(EmailMessage.TO); //設置接收人地址 message.setRecipient(Message.RecipientType.TO, toAddress); //設置發送信息的內容 下面爲發送html //設置郵件格式 EmailMessage.Email_Content = "text/html; charset=utf-8"; message.setContent(EmailMessage.Email_Body, EmailMessage.Email_Content); //保存上面添加的信息 message.saveChanges(); //發送郵件 System.out.println("開始發送郵件..."); Transport.send(message); System.out.println("發送成功!"); } catch (Exception e){ System.out.println("出現錯誤"); e.printStackTrace(); } } /** * 發送帶有附件格式的郵件 */ public void doSendAttachmentMail(){ //獲取系統環境 Properties prop = new Properties(); Authenticator auth = null; if (EmailMessage.validate){ //郵件服務器認證 用戶名和密碼 auth = new MailAuthenticator(); } //添加必要的信息 prop.put("mail.smtp.host", EmailMessage.Email_Host); prop.put("mail.smtp.auth", "true"); //設置對話和郵件服務器進行通信 Session session = Session.getDefaultInstance(prop, auth); //設置郵件對象 Message message = new MimeMessage(session); try { //設置郵件主題 message.setSubject(EmailMessage.Email_Subject); //設置郵件標題 message.setHeader("Header", EmailMessage.Email_Header); //設置發送時間 message.setSentDate(EmailMessage.sendDate); //設置發信人地址 和 名字 Address address = new InternetAddress(EmailMessage.FROM, EmailMessage.FROM_NAME); //把發件人信息添加到信息中 message.setFrom(address); //設置發件人地址 Address toAddress = new InternetAddress(EmailMessage.TO); //設置接收人地址 message.setRecipient(Message.RecipientType.TO, toAddress); //設置發送信息的內容 下面爲發送附件 message.setContent(EmailMessage.Email_Body, EmailMessage.Email_Content); BodyPart messageBodyPart = new MimeBodyPart(); messageBodyPart.setText("bodypart"); Multipart multipart = new MimeMultipart(); multipart.addBodyPart(messageBodyPart); List<Map<String,String>> fileList=new ArrayList<Map<String, String>>(); Map<String,String> map =new HashMap<String,String>(); Map<String,String> map1 =new HashMap<String,String>(); map.put("name", "newout.xl"); map.put("address", "E:\\newout.xls"); map1.put("name", "123文件名.xls"); map1.put("address", "E:\\123文件名.xls"); fileList.add(0, map); fileList.add(1, map1); for(int i=0;i<fileList.size();i++){ messageBodyPart = new MimeBodyPart(); //設置上傳的資源 DataSource source = new FileDataSource(fileList.get(i).get("address")); //添加到 messageBodyPart.setDataHandler(new DataHandler(source)); //設置文件名稱,記得後綴名 messageBodyPart.setFileName(fileList.get(i).get("name")); multipart.addBodyPart(messageBodyPart); message.setContent(multipart); //保存上面添加的信息 message.saveChanges(); } //發送郵件 System.out.println("doSendAttachmentMail() 開始發送郵件……"); Transport.send(message); System.out.println("發送成功!"); } catch (Exception e){ System.out.println("出錯"); e.printStackTrace(); } } /* * 遍歷List返回字符串 */ private String getMailList(List mailArray) { StringBuffer toList = new StringBuffer(); int length = mailArray.size(); if (mailArray != null && length < 2) { toList.append(mailArray.get(0)); } else { for (int i = 0; i < length; i++) { toList.append(mailArray.get(i)); if (i != (length - 1)) { toList.append(","); } } } return toList.toString(); } /** * @param args */ public static void main(String[] args) { //new SendEmail().doSendNormalMail(); //new SendEmail().doSendHtmlMail(); new SendEmail().doSendAttachmentMail(); } }