第一在郵件帳戶設置開啓如下兩個html
須要發送短信獲取 受權碼。java
代碼以下:服務器
package com.hjb.javaMail; import javax.mail.*; import javax.mail.internet.MimeMessage; import java.util.Date; import java.util.Properties; public class Mail { /** * 一、SMTP 服務器的端口 (不一樣的服務器可能會有不一樣端口號) * 二、會話對象,用於和郵件服務器交互 * 三、郵件對象 */ public static final String smtpPort = "465"; private Session session; private MimeMessage message; public Mail() { } /** * 初始化方法 * * @param myEmailSMTPHost 發件人郵箱 SMTP 地址 * @param agreement 使用的協議 * @param auth 是否須要請求認證 */ public Mail(String myEmailSMTPHost, String agreement, String auth) throws NoSuchProviderException { // 配置參數 Properties properties = new Properties(); properties.setProperty("mail.transport.protocol", agreement); properties.setProperty("mail.smtp.host", myEmailSMTPHost); properties.setProperty("mail.smtp.auth", auth); properties.setProperty("mail.smtp.port", smtpPort); properties.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); properties.setProperty("mail.smtp.socketFactory.fallback", "false"); properties.setProperty("mail.smtp.socketFactory.port", smtpPort); // 獲取一個郵件會話對象 session = Session.getInstance(properties); // 是否須要開啓 debug 模式,開啓後會輸出詳細的 log 信息 session.setDebug(true); // 建立一封郵件 message = new MimeMessage(session); } /** * 設置郵件內容 * * @param myEmailAccout 發件人郵箱 * @param addresseeEmail 收件人郵箱 * @param emailSubject 郵件主題 * @param emailContent 郵件正文(PS:能夠是 HTML 標籤形式) * @return MimeMessage 郵件 * @throws Exception */ public MimeMessage setEmail(String myEmailAccout, String addresseeEmail, String emailSubject, String emailContent) throws MessagingException { message.setFrom(myEmailAccout); // 第一個參數 以 收件人、抄送、密送 的形式,具體意思請自行百度(手動捂臉) message.setRecipients(Message.RecipientType.TO, addresseeEmail); message.setSubject(emailSubject, "UTF-8"); message.setContent(emailContent, "text/html;charset=UTF-8"); // 郵件發送時間 message.setSentDate(new Date()); // 保存設置內容 message.saveChanges(); return message; } /** * 發送郵件 * * @param myEmailAccout 發件人郵箱 * @param myEmailPassword 發件人郵箱受權碼(163 郵箱的叫作獨立密碼) * @throws MessagingException */ public void sendOut(String myEmailAccout, String myEmailPassword) throws MessagingException { // 第一步:經過郵件會話對象(Session)獲取郵件傳輸對象 Transport transport = session.getTransport(); // 第二步:進行鏈接 transport.connect(myEmailAccout, myEmailPassword); // 第三步:發送郵件,第一個參數是:郵件對象(MimeMessage),第二個參數獲取保存設置後的郵件內容 transport.sendMessage(message, message.getAllRecipients()); // 第三步:關閉鏈接。 transport.close(); } }
測試代碼:session
package com.hjb.javaMail; import com.hjb.javaMail.Mail; import javax.mail.MessagingException; public class TestMail { public static void main(String[] args) throws MessagingException { String myEmailAccount = "發件人@qq.com"; String myEmailPassword = "gciljwmywhyzbcdj"; //這個就是受權碼 // 每一個郵箱的地址有所不一樣 String myEmailSMTPHost = "smtp.qq.com"; String addresseeEmail = "收件人@qq.com"; String agreement = "smtp"; String auth = "true"; String emailSubject = "元宵節快樂"; String emailContent = "<h3>fsdafdsfsdaf</h3>"; Mail mail = new Mail(myEmailSMTPHost, agreement, auth); mail.setEmail(myEmailAccount, addresseeEmail, emailSubject, emailContent); mail.sendOut(myEmailAccount, myEmailPassword); } }
效果圖socket