1. 程式人生 > >java實現郵箱驗證(一)

java實現郵箱驗證(一)

需求:使用者註冊時給郵箱傳送郵件,得到驗證碼並填寫,進行啟用郵箱。

有基礎的可以直接看下篇: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    或者留言我發給你。