馬上注冊(cè),結(jié)交更多好友,享用更多功能^_^
您需要 登錄 才可以下載或查看,沒(méi)有賬號(hào)?立即注冊(cè)
x
在很多網(wǎng)站注冊(cè)的時(shí)候,為了驗(yàn)證用戶信息的真實(shí)合法,往往需要驗(yàn)證用戶所填郵件的準(zhǔn)確性。形式為:用戶注冊(cè)時(shí)填寫(xiě)郵箱java郵箱驗(yàn)證碼的實(shí)現(xiàn),注冊(cè)完成后,網(wǎng)站會(huì)向用戶所填郵箱發(fā)送一封激活郵件,用戶點(diǎn)擊激活郵件中的鏈接后,方可完成注冊(cè)。
最近項(xiàng)目中也用到這個(gè)需求,做了個(gè)Demo與大家分享,大至思想如下:
數(shù)據(jù)庫(kù)表結(jié)構(gòu)
用戶表有五個(gè)字段分別為用戶名、密碼、郵箱地址、激活碼、狀態(tài):
| | email |code | state |
核心代碼:
.java
java.util.;
java.util.UUID;
javax.mail.;
javax.mail.;
javax.mail.;
javax.mail.on;
javax.mail.;
javax.mail.;
javax.mail..;
javax.mail..;
javax.mail..;
javax.mail..;
dao.;
class {
/**
* 注冊(cè)用戶
* @param 用戶名
* @param 密碼
* @param email 郵箱
* @ 是否注冊(cè)成功
*/
( , , email){
=false;
//生成用戶code
code=UUID.()。()。("-", "");
//添加用戶
=new ();
=.(, , email, code);
//向用戶發(fā)送激活郵件
(email,code);
;
}
/**
* 發(fā)送激活郵件
* @param to 收件人郵箱地址
* @param code 激活碼
*/
( to, code) {
try {
props = new ();
props.put("", "");
props.put("", "");
props.put("mail..", "smtp" );
props.put("mail.smtp.host", "");
props.put("mail.smtp.port", "25" );
= .(props);
msg = new ();
msg.(new (""));
msg.(..TO, .parse(to));
msg.("激活郵件");
msg.("此郵件為官方激活郵件!請(qǐng)點(diǎn)擊下面鏈接完成激活操作!:8080///","text/html;=UTF-8");
msg.();
= .("smtp");
.(props.("mail.smtp.host"), props
.(""), props.(""));
.(msg, msg.());
.close();
} catch ( e) {
e.();
.out.(e);
false;
}
true;
}
/**
* 激活用戶
* @param code 用戶激活碼
* @ 是否激活成功
*/
( code){
=new ();
=.(code);
if(!=null && !=""){
//如果存在用戶,將此用戶狀態(tài)設(shè)為可用
.();
true;
}else{
false;
}
}
}
當(dāng)用戶注冊(cè)時(shí)
1、為用戶生成隨機(jī)的激活碼(此激活碼是添加根據(jù)代碼規(guī)則自動(dòng)生成的,這里的激活碼以隨機(jī)生成的UUID為例);
2、添加一條用戶記錄;
3、向用戶發(fā)送激活郵件。
用戶點(diǎn)擊郵箱中的鏈接后,系統(tǒng)根據(jù)用戶點(diǎn)擊鏈接發(fā)來(lái)的激活碼去數(shù)據(jù)庫(kù)中查詢(xún)與該激活碼匹配的用戶記錄java郵箱驗(yàn)證碼的實(shí)現(xiàn),如果記錄存在,則將用戶狀態(tài)更改為可用的狀態(tài)。