java后台代码发送邮件

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:页面测试

 

 

 收到邮件了

 

posted @ 2017-12-27 16:05  再也伤不起  阅读(4506)  评论(0编辑  收藏  举报