【工程截圖】
【代碼實現】
【Mail.java】
package com.Higgin.Utils; import java.util.ArrayList; import java.util.List; /** * 表示郵件類,你需要設置:賬戶名和密碼、收件人、抄送(可選)、暗送(可選)、主題、內容,以及附件(可選) * * 在創建了Mail對象之后 * 可以調用它的setSubject()、setContent(),設置主題和正文 * 也可以調用setFrom()和 addToAddress(),設置發件人,和添加收件人。 * 也可以調用addAttch()添加附件 * 創建AttachBean:new AttachBean(new File("..."), "fileName"); */ public class Mail { private String from; //發件人 private StringBuilder toAddress = new StringBuilder(); //收件人 private StringBuilder ccAddress = new StringBuilder(); //抄送 private StringBuilder bccAddress = new StringBuilder(); //暗送 private String subject;//主題 private String content;//正文 // 附件列表 private List<AttachBean> attachList = new ArrayList<AttachBean>(); public Mail() {} public Mail(String from, String to) { this(from, to, null, null); } public Mail(String from, String to, String subject, String content) { this.from = from; this.toAddress.append(to); this.subject = subject; this.content = content; } /** * 返回發件人 * @return */ public void setFrom(String from) { this.from = from; } /** * 返回發件人 * @return */ public String getFrom() { return from; } /** * 返回主題 */ public String getSubject() { return subject; } /** * 設置主題 */ public void setSubject(String subject) { this.subject = subject; } /** * 獲取主題內容 */ public String getContent() { return content; } /** * 設置主題內容 * @param content */ public void setContent(String content) { this.content = content; } /** * 獲取收件人 * @return */ public String getToAddress() { return toAddress.toString(); } /** * 獲取抄送 * @return */ public String getCcAddress() { return ccAddress.toString(); } /** * 獲取暗送 * @return */ public String getBccAddress() { return bccAddress.toString(); } /** * 添加收件人,可以是多個收件人 * @param to */ public void addToAddress(String to) { if(this.toAddress.length() > 0) { this.toAddress.append(","); } this.toAddress.append(to); } /** * 添加抄送人,可以是多個抄送人 * @param cc */ public void addCcAddress(String cc) { if(this.ccAddress.length() > 0) { this.ccAddress.append(","); } this.ccAddress.append(cc); } /** * 添加暗送人,可以是多個暗送人 * @param bcc */ public void addBccAddress(String bcc) { if(this.bccAddress.length() > 0) { this.bccAddress.append(","); } this.bccAddress.append(bcc); } /** * 添加附件,可以添加多個附件 * @param attachBean */ public void addAttach(AttachBean attachBean) { this.attachList.add(attachBean); } /** * 獲取所有附件 * @return */ public List<AttachBean> getAttachs() { return this.attachList; } }
【AttachBean.java】
package com.Higgin.Mail.Utils; import java.io.File; /** * 發送附件用 */ public class AttachBean { private String cid; private File file; private String fileName; public String getCid() { return cid; } public void setCid(String cid) { this.cid = cid; } public File getFile() { return file; } public void setFile(File file) { this.file = file; } public String getFileName() { return fileName; } public void setFileName(String fileName) { this.fileName = fileName; } public AttachBean() { } public AttachBean(File file, String fileName) { super(); this.file = file; this.fileName = fileName; } }
【MailUtils.java】
package com.Higgin.Utils; import java.io.IOException; import java.util.List; import java.util.Properties; import javax.mail.Authenticator; import javax.mail.MessagingException; import javax.mail.PasswordAuthentication; import javax.mail.Session; import javax.mail.Transport; import javax.mail.Message.RecipientType; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeBodyPart; import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMultipart; import javax.mail.internet.MimeUtility; /** * 郵件工具類 * @author YH * */ public class MailUtils { public static Session createSession(String host, final String username, final String password) { Properties prop = new Properties(); prop.setProperty("mail.host", host); // 指定主機 prop.setProperty("mail.smtp.auth", "true"); // 指定驗證為true // 創建驗證器 Authenticator auth = new Authenticator() { public PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(username, password); } }; // 獲取session對象 return Session.getInstance(prop, auth); } /** * 發送指定的郵件 * * @param mail */ public static void send(Session session, final Mail mail) throws MessagingException, IOException { MimeMessage msg = new MimeMessage(session);// 創建郵件對象 msg.setFrom(new InternetAddress(mail.getFrom()));// 設置發件人 msg.addRecipients(RecipientType.TO, mail.getToAddress());// 設置收件人 // 設置抄送 String cc = mail.getCcAddress(); if (!cc.isEmpty()) { msg.addRecipients(RecipientType.CC, cc); } // 設置暗送 String bcc = mail.getBccAddress(); if (!bcc.isEmpty()) { msg.addRecipients(RecipientType.BCC, bcc); } msg.setSubject(mail.getSubject());// 設置主題 MimeMultipart parts = new MimeMultipart();// 創建部件集對象 MimeBodyPart part = new MimeBodyPart();// 創建一個部件 part.setContent(mail.getContent(), "text/html;charset=utf-8");// 設置郵件文本內容 parts.addBodyPart(part);// 把部件添加到部件集中 /////////////////////////////////////////// // 添加附件 List<AttachBean> attachBeanList = mail.getAttachs();// 獲取所有附件 if (attachBeanList != null) { for (AttachBean attach : attachBeanList) { MimeBodyPart attachPart = new MimeBodyPart();// 創建一個部件 attachPart.attachFile(attach.getFile());// 設置附件文件 attachPart.setFileName(MimeUtility.encodeText(attach .getFileName()));// 設置附件文件名 String cid = attach.getCid(); if(cid != null) { attachPart.setContentID(cid); } parts.addBodyPart(attachPart); } } msg.setContent(parts);// 給郵件設置內容 Transport.send(msg);// 發郵件 } }
【MailUtilsTest.java】測試類
package com.Higgin.Mail.Demo; import java.io.IOException; import javax.mail.MessagingException; import javax.mail.Session; import org.junit.Test; import com.Higgin.Mail.Utils.Mail; import com.Higgin.Mail.Utils.MailUtils; public class MailUtilsTest { /*** 發郵件 * @throws IOException * @throws MessagingException ***/ @Test public void sendMail() throws MessagingException, IOException{ /** * 1.登錄郵件服務器 * MailUtils.createSession(服務器地址,登錄名,密碼); * 2.創建郵件對象 * 發件人 * 收件人 * 主題 * 正文 * 3.發郵件 * 需要第1步得到的session 以及 第2步的郵件對象 */ Session session=MailUtils.createSession("smtp.163.com", "Higgin", "123456"); //public Mail(String from, String to, String subject, String content) Mail mail=new Mail("higgin1@163.com","higgin2@126.com","測試郵件標題啊","郵件內容啊"); //發送 MailUtils.send(session, mail); } }