相信大家對於網站也好,手機app也好,用戶注冊時,需要進行郵箱驗證的功能特別好奇吧,本篇我將帶領大家一起實現一下這個簡單而又神奇的小功能,讓我們的應用也可以加入這些神奇的元素。廢話不多說,下面開始我們今天的內容介紹。
首先實現上面的功能,需要一個固定的發送電子郵件的郵箱地址,這里我們就以我們經常使用的QQ郵箱為例實現一下這個功能。
第一件事,你需要開啟QQ郵箱的IMAP/SMAP服務:
登錄QQ郵箱-->設置-->賬號-->開啟IMAP/SMAP與P0P3/SMAP
開啟這兩個時,你會獲得兩個密碼,接下來的內容中會使用到。
發送電子郵件服務,需要使用到一下三個JAR包:mail.jar;activation.jar;cos.jar,這里我已經幫大家整理好了,下載地址:http://pan.baidu.com/s/1sknsZOp,下載好我們的JAR包,導入到我們工程的lib目錄下即可。
發送電子郵件的JAVA代碼如下:
import java.util.Properties; import javax.mail.*; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; /** * 使用QQ郵箱IMAP/SMTP的實現發送電子郵件 * 2015-12-06 */ public class Mail { public static void main(String[] args) { Properties props = new Properties(); props.put("mail.smtp.host", "smtp.qq.com"); props.put("mail.smtp.port", "587");//使用465或587端口 props.put("mail.smtp.auth", "true");//設置使用驗證 props.put("mail.smtp.starttls.enable","true");//使用 STARTTLS安全連接 try { PopupAuthenticator auth = new PopupAuthenticator(); Session session = Session.getInstance(props, auth); session.setDebug(true);//打印Debug信息 MimeMessage message = new MimeMessage(session); Address addressFrom = new InternetAddress(PopupAuthenticator.mailuser + "@qq.com", "");//第一個參數為發送方電子郵箱地址;第二個參數為發送方郵箱地址的標簽 Address addressTo = new InternetAddress("xxxxxxxxxxxx", "");//第一個參數為接收方電子郵箱地址;第二個參數為接收方郵箱地址的標簽 message.setSubject("發送電子郵件的主題"); message.setText("發送電子郵件內容"); message.setFrom(addressFrom); message.addRecipient(Message.RecipientType.TO, addressTo); message.saveChanges(); Transport transport = session.getTransport("smtp"); transport.connect("smtp.qq.com", PopupAuthenticator.mailuser, PopupAuthenticator.password); transport.send(message); transport.close(); System.out.println("發送成功"); } catch (Exception e) { System.out.println(e.toString()); System.out.println("發送失敗"); } } } class PopupAuthenticator extends Authenticator { public static final String mailuser = "1453296946";//發送方郵箱'@'符號前的內容:1453296946@qq.com public static final String password = "xxxxxxxxxxxx";//成功開啟IMAP/SMTP服務,在第三方客戶端登錄時,騰訊提供的密碼。注意不是郵箱密碼 public PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(mailuser, password); } }
是不是很簡單,接下來我們的郵箱驗證、登錄驗證、注冊驗證、找回密碼是不是都找到實現的方向啦。