1 packagecom.liveyc.eloan.base.service.impl;2
3 importjava.util.Date;4 importjava.util.Properties;5 importjava.util.UUID;6
7 importjavax.mail.internet.MimeMessage;8
9 importorg.springframework.beans.factory.annotation.Autowired;10 importorg.springframework.beans.factory.annotation.Value;11 importorg.springframework.mail.javamail.JavaMailSenderImpl;12 importorg.springframework.mail.javamail.MimeMessageHelper;13 importorg.springframework.stereotype.Service;14
15 importcom.liveyc.eloan.base.dao.EmailverifyDao;16 importcom.liveyc.eloan.base.domain.Emailverify;17 importcom.liveyc.eloan.base.service.IEmailVerifyService;18 importcom.liveyc.eloan.base.util.DateUtil;19 importcom.liveyc.eloan.util.BidConst;20 importcom.liveyc.eloan.util.UserContext;21
22 @Service23 public class EmailVerifyServiceImpl implementsIEmailVerifyService {24
25 @Autowired26 privateEmailverifyDao emailverifyDao;27
28 @Value("${mail.host}")29 privateString host;30
31 @Value("${mail.smtpHost}")32 privateString smtpHost;33
34 @Value("${mail.username}")35 privateString username;36
37 @Value("${mail.password}")38 privateString password;39
40 /**
41 *http://localhost:8080/checkEmailBind.do?key=4f399b0b-c17b-4e9d-9abc-042 * c816cd474bb 1,得到当前用户,得到要绑定的邮箱,绑定的时间,生成一个随机码--->EmailVerify;43 * 2,发送一封邮件;在邮件的这里(http://localhost/checkEmailBind.do?key=随机码)44 */
45 @Override46 public voidsendVerifyEmail(String email) {47 Emailverify ev = newEmailverify();48 ev.setUserinfoId(UserContext.getCurrent().getId());49 ev.setEmail(email);50 ev.setSendTime(newDate());51 ev.setUuid(UUID.randomUUID().toString().replace("-", ""));52
53 //构造邮件内容
54 StringBuilder content = new StringBuilder(100)55 .append("
这是你在蓝源Eloan网站的验证邮件,请点击").append("这里").append("")58 .append("完成邮箱绑定,有效期为"+BidConst.EMAIL_VALID_DAY+"天
");5960 System.out.println(content);61
62 try{63 sendEmail(email, "绑定邮箱验证邮件", content.toString());64 this.emailverifyDao.insert(ev);65 } catch(Exception e) {66 throw newRuntimeException(e.getMessage());67 }68 }69
70 /**
71 * 发送邮件72 *73 *@paramemail74 *@paramstring75 *@paramstring276 */
77 private voidsendEmail(String email, String subject, String content)78 throwsException {79 JavaMailSenderImpl senderImpl = newJavaMailSenderImpl();80
81 //设置发送邮件的SMTP服务器地址
82 senderImpl.setHost(smtpHost);83
84 //创建一个邮件对象
85 MimeMessage mailMessage =senderImpl.createMimeMessage();86
87 //创建邮件对象的服务类
88 MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage,"UTF-8");89
90 messageHelper.setTo(email);//设置发给谁
91 messageHelper.setFrom(username);//发件人
92 messageHelper.setSubject(subject);//设置邮件标题
93 messageHelper.setText(content, true);//设置邮件内容
94
95 senderImpl.setUsername(username); //根据自己的情况,设置username
96 senderImpl.setPassword(password);//设置密码
97
98 Properties prop = newProperties();99 prop.put("mail.smtp.auth", "true");//设置发送邮件需要身份认证
100 prop.put("mail.smtp.timeout", "25000");//设置发送超时时间
101 senderImpl.setJavaMailProperties(prop);102
103 senderImpl.send(mailMessage);104 }105
106 /**
107 * 获取请求中的随机码;108 *109 * 2,根据随机码得到EmailVerify对象; 3,只需要验证时间是否超时; 4,把emailverify中的邮箱地址绑定到指定用户上;110 */
111 @Override112 publicEmailverify verifyEmail(String key) {113 Emailverify ev = this.emailverifyDao.selectByUuid(key);114 if (ev != null
115 && DateUtil.getSecondsBetweenDates(ev.getSendTime(), new Date()) <= 3600 * 24 *BidConst.EMAIL_VALID_DAY) {116 returnev;117 }118 return null;119 }120
121 }