1:安装 eyoumailserversetup 易邮邮件服务器 注册账号
2:安装Foxmail
登录以后会有个还原页面
3:测试
4:java 代码编写
配置文件:
mail.host=http://172.16.71.27:8080/ mail.smtpHost=172.16.71.27 mail.username=Admin@liveyc.com mail.password=Admin
server层代码:
1 package com.liveyc.eloan.base.service.impl; 2 3 import java.util.Date; 4 import java.util.Properties; 5 import java.util.UUID; 6 7 import javax.mail.internet.MimeMessage; 8 9 import org.springframework.beans.factory.annotation.Autowired; 10 import org.springframework.beans.factory.annotation.Value; 11 import org.springframework.mail.javamail.JavaMailSenderImpl; 12 import org.springframework.mail.javamail.MimeMessageHelper; 13 import org.springframework.stereotype.Service; 14 15 import com.liveyc.eloan.base.dao.EmailverifyDao; 16 import com.liveyc.eloan.base.domain.Emailverify; 17 import com.liveyc.eloan.base.service.IEmailVerifyService; 18 import com.liveyc.eloan.base.util.DateUtil; 19 import com.liveyc.eloan.util.BidConst; 20 import com.liveyc.eloan.util.UserContext; 21 22 @Service 23 public class EmailVerifyServiceImpl implements IEmailVerifyService { 24 25 @Autowired 26 private EmailverifyDao emailverifyDao; 27 28 @Value("${mail.host}") 29 private String host; 30 31 @Value("${mail.smtpHost}") 32 private String smtpHost; 33 34 @Value("${mail.username}") 35 private String username; 36 37 @Value("${mail.password}") 38 private String password; 39 40 /** 41 * http://localhost:8080/checkEmailBind.do?key=4f399b0b-c17b-4e9d-9abc-0 42 * c816cd474bb 1,得到当前用户,得到要绑定的邮箱,绑定的时间,生成一个随机码--->EmailVerify; 43 * 2,发送一封邮件;在邮件的这里(http://localhost/checkEmailBind.do?key=随机码) 44 */ 45 @Override 46 public void sendVerifyEmail(String email) { 47 Emailverify ev = new Emailverify(); 48 ev.setUserinfoId(UserContext.getCurrent().getId()); 49 ev.setEmail(email); 50 ev.setSendTime(new Date()); 51 ev.setUuid(UUID.randomUUID().toString().replace("-", "")); 52 53 // 构造邮件内容 54 StringBuilder content = new StringBuilder(100) 55 .append("<html><head></head><body><h1>这是你在蓝源Eloan网站的验证邮件,请点击<a href='") 56 .append(host).append("checkEmailBind.do?key=") 57 .append(ev.getUuid()).append("'>").append("这里").append("</a>") 58 .append("完成邮箱绑定,有效期为"+BidConst.EMAIL_VALID_DAY+"天</h1></body></html>"); 59 60 System.out.println(content); 61 62 try { 63 sendEmail(email, "绑定邮箱验证邮件", content.toString()); 64 this.emailverifyDao.insert(ev); 65 } catch (Exception e) { 66 throw new RuntimeException(e.getMessage()); 67 } 68 } 69 70 /** 71 * 发送邮件 72 * 73 * @param email 74 * @param string 75 * @param string2 76 */ 77 private void sendEmail(String email, String subject, String content) 78 throws Exception { 79 JavaMailSenderImpl senderImpl = new JavaMailSenderImpl(); 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 = new Properties(); 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 @Override 112 public Emailverify 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 return ev; 117 } 118 return null; 119 } 120 121 }
5:页面测试
收到邮件了