- 導入依賴
<dependency> <groupId>javax.activation</groupId> <artifactId>activation</artifactId> <version>1.1</version> </dependency> <dependency> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> <version>1.4</version> </dependency>
- 定義使用者名密碼
package org.lhj.pro.email; import javax.mail.Authenticator; import javax.mail.PasswordAuthentication; /** * 發件人賬号密碼 * @author zhangdi * */ public class MailAuthenticator extends Authenticator{ public static String USERNAME = ""; public static String PASSWORD = ""; public MailAuthenticator() { } protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(USERNAME, PASSWORD); } }
- 郵件發送工具類
package org.lhj.pro.email; import java.util.Date; import java.util.Properties; 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;/** * 郵件發送操作類 * * @author zhangdi * */ public class MailOperation { /** * 發送郵件 * @param user 發件人郵箱 * @param password 授權碼(注意不是郵箱登入密碼) * @param host * @param from 發件人 * @param to 接收者郵箱 * @param subject 郵件主題 * @param content 郵件内容 * @return success 發送成功 failure 發送失敗 * @throws Exception */ public String sendMail(String user, String password, String host, String from, String to, String subject, String content) throws Exception { if (to != null){ Properties props = System.getProperties(); props.put("mail.smtp.host", host); props.put("mail.smtp.auth", "true"); MailAuthenticator auth = new MailAuthenticator(); MailAuthenticator.USERNAME = user; MailAuthenticator.PASSWORD = password; Session session = Session.getInstance(props, auth); session.setDebug(true); try { MimeMessage message = new MimeMessage(session); message.setFrom(new InternetAddress(from)); if (!to.trim().equals("")) message.addRecipient(Message.RecipientType.TO, new InternetAddress(to.trim())); message.setSubject(subject); MimeBodyPart mbp1 = new MimeBodyPart(); // 正文 mbp1.setContent(content, "text/html;charset=utf-8"); Multipart mp = new MimeMultipart(); // 整個郵件:正文+附件 mp.addBodyPart(mbp1); // mp.addBodyPart(mbp2); message.setContent(mp); message.setSentDate(new Date()); message.saveChanges(); Transport trans = session.getTransport("smtp"); trans.send(message); System.out.println(message.toString()); } catch (Exception e){ e.printStackTrace(); return "failure"; } return "success"; }else{ return "failure"; } } }
- 測試類
package org.lhj.pro.email; import java.util.Random; import org.apache.commons.lang3.RandomUtils; public class TestEmail { public static void main(String[] args) { MailOperation operation = new MailOperation(); String user = "[email protected]"; // 你的郵箱位址 String password = "lhj123456"; // 你的郵箱授權碼 String host = "smtp.163.com"; String from = "[email protected]"; // 你的郵箱位址 String to = "[email protected]";// 收件人 目标郵箱位址 String subject = "測試發郵件功能"; // 輸入郵件主題 //郵箱内容 StringBuffer sb = new StringBuffer(); int yzm = new Random().nextInt(99999)+100000; //随機生成6位驗證碼 System.err.println("擷取驗證碼的第一種方式:" + yzm); System.err.println("擷取驗證碼的另一種方式:" + (int)((Math.random()*9+1)*100000)); sb.append("<!DOCTYPE>"+"<div bgcolor='#f1fcfa' style='border:1px solid #d9f4ee; font-size:14px; line-height:22px; color:#005aa0;padding-left:1px;padding-top:5px; padding-bottom:5px;'><span style='font-weight:bold;'>溫馨提示:</span>" + "<div style='width:950px;font-family:arial;'>歡迎使用xxx平台,您的注冊碼為:<br/><h2 style='color:green'>"+yzm+"</h2><br/>本郵件由系統自動發出,請勿回複。<br/>感謝您的使用。<br/>xxx有限公司</div>" +"</div>"); try { String res = operation.sendMail(user, password, host, from, to, subject, sb.toString()); System.out.println(res); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
- 郵件樣式如下
溫馨提示:
歡迎使用xxx平台,您的注冊碼為:
127582
本郵件由系統自動發出,請勿回複。
感謝您的使用。
xxx有限公司