日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java使用163邮箱完成发送邮件完成注册

發(fā)布時(shí)間:2023/12/20 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java使用163邮箱完成发送邮件完成注册 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前言:最近在做一個(gè)pc網(wǎng)站,網(wǎng)站需要郵箱注冊(發(fā)送的驗(yàn)證碼),阿里云部署項(xiàng)目.所以采用的是163的郵箱(網(wǎng)易6.0)!!

?

使用前必須先去注冊163郵箱(免費(fèi)),還有去設(shè)置-->客戶端授權(quán)密碼-->開啟(然后自己設(shè)置一個(gè)密碼),在去設(shè)置-->POP3/SMTP/IMAP-->全選√.

?

使用前的注意事項(xiàng):
1. 發(fā)送郵件一般是25端口,但是在阿里云部署項(xiàng)目,現(xiàn)在的阿里云的ECS服務(wù)器是默認(rèn)關(guān)閉了25端口,就算在安全組規(guī)則添加25端口進(jìn)去,也是發(fā)送不了郵件
2.在本地環(huán)境可以采用25端口來發(fā)送郵件,在阿里云的服務(wù)器上采用465端口來發(fā)送郵件!!!

3.一下的email和密碼是采用你注冊的郵箱賬號(hào),和你在開啟的客戶端授權(quán)密碼(切記:并不是你注冊的時(shí)候的密碼)

參考文章:https://www.cnblogs.com/hoojjack/p/8025284.html

郵件工具類:

?

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.InternetAddress; import javax.mail.internet.MimeMessage;/*** 郵件工具類* smtp服務(wù)器,支持非ssl協(xié)議25端口,和ssl協(xié)議465端口* 如果硬件服務(wù)器可以采用25端口,來發(fā)送郵件* 如果采用阿里云ESC服務(wù)器,默認(rèn)25端口是不開放,添加安全組規(guī)則25端口也沒用,必須采用465端口* @author Monkey* @date 2017年10月20日上午9:50:15* @version 1.0*/ public class SendEmail {//這一套采用25端口 // public static final String HOST = "smtp.163.com"; // public static final String PROTOCOL = "smtp"; // public static final String PORT = "25"; // public static final String FROM = "";// 發(fā)件人的email // public static final String PWD = "";// 發(fā)件人密碼//這一套采用465端口public static final String HOST = "smtp.163.com";public static final String PORT = "465";public static final String FROM = "";// 發(fā)件人的emailpublic static final String PWD = "";// 發(fā)件人密碼public static final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";/*** 獲取Session* * @return*/private static Session getSession() {Properties props = new Properties();//這一套是25端口 // props.put("mail.smtp.host", HOST);// 設(shè)置服務(wù)器地址 // props.put("mail.store.protocol", PROTOCOL);// 設(shè)置協(xié)議 // props.put("mail.smtp.port",PORT);// 設(shè)置端口 // props.put("mail.smtp.auth", "true");//注意是字符串的true,不是boolean類型的true//這一套是465端口props.setProperty("mail.smtp.host",HOST);// 設(shè)置服務(wù)器地址props.setProperty("mail.smtp.socketFactory.class",SSL_FACTORY);// 設(shè)置協(xié)議props.setProperty("mail.smtp.socketFactory.fallback", "false");//注意是字符串的true,不是boolean類型的trueprops.setProperty("mail.smtp.port",PORT);// 設(shè)置端口props.setProperty("mail.smtp.socketFactory.port",PORT);props.put("mail.smtp.auth", "true");//注意是字符串的true,不是boolean類型的trueAuthenticator authenticator = new Authenticator() {@Overrideprotected PasswordAuthentication getPasswordAuthentication() {return new PasswordAuthentication(FROM, PWD);}};Session session = Session.getDefaultInstance(props, authenticator);return session;}public static void send(String toEmail, String content)throws MessagingException {Session session = getSession();System.out.println("--send--" + content);// Instantiate a messageMessage msg = new MimeMessage(session);// Set message attributesmsg.setFrom(new InternetAddress(FROM));InternetAddress[] address = { new InternetAddress(toEmail) };msg.setRecipients(Message.RecipientType.TO, address);msg.setSubject("激活幣之家通行證");msg.setSentDate(new Date());msg.setContent(content, "text/html;charset=utf-8");// Send the messageTransport.send(msg);}}

?

?

還是怕有的人不知道怎么使用,我就貼上我自己的注冊的業(yè)務(wù)代碼,僅供參考!!

serviceImpl:

?

@Overridepublic Result register(String action, UserPassport userPassport,String code) throws ServiceException {//郵箱注冊if (action.equals("email")) {//獲取郵箱String email = userPassport.getEmail();// 數(shù)據(jù)訪問層,通過email獲取用戶信息UserValidcode userValidcode = validcodeMapper.selectByEmail(email);// 驗(yàn)證用戶是否存在if (userValidcode != null) {// 驗(yàn)證用戶激活狀態(tài)if (userValidcode.getStatus() == -1) {// 驗(yàn)證激活碼是否正確if (code.equals(userValidcode.getCode())) {Integer id = validcodeMapper.validEmailCode(email, code);try {if (id != null) {// 激活成功, //并更新用戶的激活狀態(tài),為已激活System.out.println("==sq===" + userValidcode.getStatus());// 把狀態(tài)改為激活userValidcode.setStatus(1);System.out.println("==sh===" + userValidcode.getStatus());validcodeMapper.updateByPrimaryKey(userValidcode);// 插入用戶賬號(hào)表UserInfo userInfo = new UserInfo();userInfo.setCreated(new Date());userInfo.setUpdated(new Date());userInfo.setNick(userPassport.getNickName());userInfo.setClient("web");userInfo.setEmail(email);userInfoMapper.insertSelective(userInfo);return ResultUtil.success(); } else {throw new ServiceException("激活碼已過期");}} catch (Exception e) {logger.debug("郵箱注冊失敗{}", e.getMessage());throw new RuntimeException();}} else {throw new ServiceException("激活碼不正確");}} else {throw new ServiceException("郵箱已激活,請登錄!");}} else {throw new ServiceException("該郵箱未注冊(郵箱地址不存在)!");}return ResultUtil.error("激活失敗{根據(jù)email沒有獲取到信息}");}return ResultUtil.error("注冊方式錯(cuò)誤!!!!!!!");}

如果出現(xiàn):java.lang.NoClassDefFoundError: com/sun/mail/util/MailLogger javax/mail/MessagingException異常
則參考這篇文章:

https://blog.csdn.net/u013361445/article/details/49663329

如果使用這篇文章的情況下出現(xiàn),采用ssl連接不上客戶端的情況下,加上這一句:

props.put("mail.smtp.ssl.enable", "true");

總結(jié)

以上是生活随笔為你收集整理的java使用163邮箱完成发送邮件完成注册的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。