java實現郵箱驗證(一)
阿新 • • 發佈:2018-12-31
需求:使用者註冊時給郵箱傳送郵件,得到驗證碼並填寫,進行啟用郵箱。
有基礎的可以直接看下篇:https://blog.csdn.net/BlackPlus28/article/details/85114001
首先一步一步來寫,這篇是以java簡單的傳送郵件
一、設定發件人的郵箱和密碼等
// 下面需要補充的是,你自己的郵箱和授權碼還有收件人郵箱。 // 發件人的郵箱 public static String emailAccount = "xxxxxxxxx"; // 發件人郵箱密碼(有的是授權碼) public static String emailPassword = "xxxxxxxxx"; // 發件人郵箱服務地址(這裡以qq郵箱為例) 網易是:smtp.163.com public static String emailSMTPHost = "smtp.qq.com"; // 收件人郵箱 public static String receiveMailAccount = "xxxxxxxxx";
java郵箱的授權碼去哪找,看下圖(已經開啟的直接跳過),直接開啟即可。網易同樣道理。為什麼我使用qq郵箱,沒使用網易,下篇傳送郵件再說。
二、建立一封郵件(發件人、收件人、郵件內容)
/** * @param session * @param sendMail * @param receiveMail * @param html * @throws MessagingException * @throws IOException * cc:抄送、 Bcc:密送、 To:傳送 */ public static MimeMessage creatMimeMessage(Session session,String sendMail,String receiveMail,String html) throws MessagingException, IOException { // 1、建立一封郵件物件 MimeMessage message = new MimeMessage(session); // 2、From:發件人 message.setFrom(new InternetAddress(sendMail, "發件人暱稱", "UTF-8")); // 3、To:收件人(可以增加多個收件人:抄送或者密送) message.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(receiveMail, "張三", "UTF-8")); // 4、Subject:郵件主題 message.setSubject("郵箱驗證","UTF-8"); // 5、Content:郵件正文(可以使用Html標籤) message.setContent("郵箱驗證","text/html;charset=UTF-8"); // 6、設定傳送時間 message.setSentDate(new Date()); // 7、儲存設定 message.saveChanges(); // 8、將該郵件儲存在本地 OutputStream out = new FileOutputStream("D://MyEmail" + UUID.randomUUID().toString() + ".eml"); message.writeTo(out); out.flush(); out.close(); return message; }
三、傳送郵件
// javaMail郵件傳送 public static void main(String[] args) { try { // 1、建立引數配置,用於連線郵箱伺服器的引數配置 Properties props = new Properties(); // 開啟debug除錯 props.setProperty("mail.debug", "true"); // 傳送伺服器需要身份驗證 props.setProperty("mail.smtp.auth", "true"); // 設定右鍵伺服器的主機名 props.setProperty("mail.host", emailSMTPHost); // 傳送郵件協議名稱 props.setProperty("mail.transport.protocol", "smtp"); // 2、根據配置建立會話物件,用於和郵件伺服器互動 Session session = Session.getInstance(props); // 設定debug,可以檢視詳細的傳送log session.setDebug(true); // 3、建立一封郵件 MimeMessage message = creatMimeMessage(session, emailAccount, receiveMailAccount, " "); // 4、根據session獲取郵件傳輸物件 Transport transport = session.getTransport(); // 5、使用郵箱賬號和密碼連線郵箱伺服器emailAccount必須與message中的發件人郵箱一致,否則報錯 transport.connect(emailAccount,emailPassword); // 6、傳送郵件,傳送所有收件人地址 transport.sendMessage(message, message.getAllRecipients()); // 7、關閉連線 transport.close(); } catch (UnsupportedEncodingException | MessagingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }
效果圖展示:
到這裡,通過java傳送qq郵件就已經完成了。
這個只是java版本的,後面我會把這個封裝起來,做成javaUtils,javaWeb專案可以直接使用。上面會涉及到傳送郵箱的jar包,我放到下面的連結裡。快去測試一下你的Demo。
原始碼地址:https://download.csdn.net/download/blackplus28/10854996 或者留言我發給你。