package com.minstone.message.util; import java.util.Date; import java.util.Properties; import javax.mail.Authenticator; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.PasswordAuthentication; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.AddressException; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; import org.springframework.stereotype.Component; @Component public class SendmailUtil { // 設置服務器 private static String KEY_SMTP = "mail.smtp.host"; // private static String VALUE_SMTP = "smtp.163.com"; // private static String VALUE_SMTP = "smtp.qq.com"; // private static String VALUE_SMTP = "smtp.exmail.qq.com"; private static String VALUE_SMTP = "smtp.sina.com.cn"; // 服務器驗證 private static String KEY_PROPS = "mail.smtp.auth"; private static boolean VALUE_PROPS = true; // 發件人用戶名、密碼 // private String SEND_USER = "abc25660663"; // private String SEND_USER = "1481596361"; // private String SEND_USER = "hongxy"; private String SEND_USER = "mingdong123abc"; //發件人郵箱 // private String FROMADDRESS=SEND_USER+"@163.com"; // private String FROMADDRESS=SEND_USER+"@qq.com"; // private String FROMADDRESS=SEND_USER+"@minstone.com.cn"; private String FROMADDRESS=SEND_USER+"@sina.com"; private String SEND_UNAME = "政務服務中心"; //郵箱密碼 // private String SEND_PWD = "25660663abc."; // private String SEND_PWD = "313131abc."; // private String SEND_PWD = "25660663Abc."; private String SEND_PWD = "mingdong123abc"; // 創建會話 private MimeMessage message; private Session s; /* * 初始化方法 */ public SendmailUtil() { Properties props = System.getProperties(); // 鏈接協議 props.put("mail.transport.protocol", "smtp"); props.put(KEY_SMTP, VALUE_SMTP); props.put(KEY_PROPS, "true");//true必定要加雙引號 props.put("mail.smtp.ssl.enable", "true");// 設置是否使用ssl安全鏈接 ---通常都使用 props.put("mail.debug", "true");// 設置是否顯示debug信息 true 會在控制檯顯示相關信息 s = Session.getDefaultInstance(props, new Authenticator(){ protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(SEND_UNAME, SEND_PWD); }}); s.setDebug(true); message = new MimeMessage(s); } /** * 發送郵件 * * @param headName * 郵件頭文件名 * @param sendHtml * 郵件內容 * @param receiveUser * 收件人地址 */ public void doSendHtmlEmail(String headName, String sendHtml, String receiveUser){ try { // 發件人 InternetAddress from = new InternetAddress(FROMADDRESS);//發送人地址 message.setFrom(from); // 收件人 InternetAddress to = new InternetAddress(receiveUser); message.setRecipient(Message.RecipientType.TO, to); // 郵件標題 message.setSubject(headName); String content = sendHtml.toString(); // 郵件內容,也能夠使純文本"text/plain" message.setContent(content, "text/html;charset=UTF-8"); message.setSentDate(new Date()); message.saveChanges(); Transport transport = s.getTransport("smtp"); //這種方式應用於163網易郵箱和QQ郵箱,最後一個參數是受權碼,網易的受權碼能夠自動設置,而QQ郵箱的受權碼需經過短信纔可收到 // transport.connect(FROMADDRESS,"25660663abc"); // transport.connect(FROMADDRESS,"yigoehcqlbxkhfid"); //QQ企業郵箱,新浪郵箱,因爲企業QQ郵箱和新浪郵箱開通POP3/SMTP/IMAP服務時,不須要受權碼 transport.connect(VALUE_SMTP, FROMADDRESS, SEND_PWD); // 發送 transport.sendMessage(message, message.getAllRecipients()); transport.close(); System.out.println("send success!"); } catch (AddressException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (MessagingException e) { e.printStackTrace(); } } public static void main(String[] args) { SendmailUtil se = new SendmailUtil(); se.doSendHtmlEmail("郵件標題1111", "郵件內容", "1481596361@qq.com"); } }
以上例子是JavaMail實現郵箱之間發送郵件功能,須要注意的是發送郵箱是否須要受權碼,須要受權碼書寫的方式和不須要受權碼書寫的方式不一致,主要區別在html
transport.connect方法的參數,而接收郵件的郵箱卻不規定,任意郵箱均可以。
須要導入一些包:
具體根據自身的狀況進行導入,通常來講mail.jar或者javax.mail.jar和activation.jar需導入