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层代码:

 package com.liveyc.eloan.base.service.impl;

 import java.util.Date;
import java.util.Properties;
import java.util.UUID; import javax.mail.internet.MimeMessage; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Service; import com.liveyc.eloan.base.dao.EmailverifyDao;
import com.liveyc.eloan.base.domain.Emailverify;
import com.liveyc.eloan.base.service.IEmailVerifyService;
import com.liveyc.eloan.base.util.DateUtil;
import com.liveyc.eloan.util.BidConst;
import com.liveyc.eloan.util.UserContext; @Service
public class EmailVerifyServiceImpl implements IEmailVerifyService { @Autowired
private EmailverifyDao emailverifyDao; @Value("${mail.host}")
private String host; @Value("${mail.smtpHost}")
private String smtpHost; @Value("${mail.username}")
private String username; @Value("${mail.password}")
private String password; /**
* http://localhost:8080/checkEmailBind.do?key=4f399b0b-c17b-4e9d-9abc-0
* c816cd474bb 1,得到当前用户,得到要绑定的邮箱,绑定的时间,生成一个随机码--->EmailVerify;
* 2,发送一封邮件;在邮件的这里(http://localhost/checkEmailBind.do?key=随机码)
*/
@Override
public void sendVerifyEmail(String email) {
Emailverify ev = new Emailverify();
ev.setUserinfoId(UserContext.getCurrent().getId());
ev.setEmail(email);
ev.setSendTime(new Date());
ev.setUuid(UUID.randomUUID().toString().replace("-", "")); // 构造邮件内容
StringBuilder content = new StringBuilder(100)
.append("<html><head></head><body><h1>这是你在蓝源Eloan网站的验证邮件,请点击<a href='")
.append(host).append("checkEmailBind.do?key=")
.append(ev.getUuid()).append("'>").append("这里").append("</a>")
.append("完成邮箱绑定,有效期为"+BidConst.EMAIL_VALID_DAY+"天</h1></body></html>"); System.out.println(content); try {
sendEmail(email, "绑定邮箱验证邮件", content.toString());
this.emailverifyDao.insert(ev);
} catch (Exception e) {
throw new RuntimeException(e.getMessage());
}
} /**
* 发送邮件
*
* @param email
* @param string
* @param string2
*/
private void sendEmail(String email, String subject, String content)
throws Exception {
JavaMailSenderImpl senderImpl = new JavaMailSenderImpl(); // 设置发送邮件的SMTP服务器地址
senderImpl.setHost(smtpHost); // 创建一个邮件对象
MimeMessage mailMessage = senderImpl.createMimeMessage(); // 创建邮件对象的服务类
MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage,"UTF-8"); messageHelper.setTo(email);// 设置发给谁
messageHelper.setFrom(username);// 发件人
messageHelper.setSubject(subject);// 设置邮件标题
messageHelper.setText(content, true);// 设置邮件内容 senderImpl.setUsername(username); // 根据自己的情况,设置username
senderImpl.setPassword(password);// 设置密码 Properties prop = new Properties();
prop.put("mail.smtp.auth", "true");// 设置发送邮件需要身份认证
prop.put("mail.smtp.timeout", "25000");// 设置发送超时时间
senderImpl.setJavaMailProperties(prop); senderImpl.send(mailMessage);
} /**
* 获取请求中的随机码;
*
* 2,根据随机码得到EmailVerify对象; 3,只需要验证时间是否超时; 4,把emailverify中的邮箱地址绑定到指定用户上;
*/
@Override
public Emailverify verifyEmail(String key) {
Emailverify ev = this.emailverifyDao.selectByUuid(key);
if (ev != null
&& DateUtil.getSecondsBetweenDates(ev.getSendTime(), new Date()) <= 3600 * 24 * BidConst.EMAIL_VALID_DAY) {
return ev;
}
return null;
} }

5:页面测试

收到邮件了

java后台代码发送邮件的更多相关文章

  1. pagebean pagetag java 后台代码实现分页 demo 前台标签分页 后台java分页

    java 后台代码实现分页 demo 实力 自己写的 标签分页 package com.cszoc.sockstore.util; import java.util.HashMap;import ja ...

  2. iOS 基于APNS消息推送原理与实现(包括JAVA后台代码)

    Push的原理: Push 的工作机制可以简单的概括为下图   图中,Provider是指某个iPhone软件的Push服务器,这篇文章我将使用.net作为Provider. APNS 是Apple ...

  3. js脚本中执行java后台代码

    使用场景:关闭页面弹窗时执行sql语句. 其实js里执行sql语句有多种方式. 方式一:直接在js代码里调用sql语句,原则上不能使用,因为这将sql直接暴露在客户端,安全性极差. 方式二:在js里运 ...

  4. jquery.cookie.js && java后台代码 操作cookie实现记住当前用户输入信息代码

    下载jquery.cookie.js地址看这里:http://pan.baidu.com/s/1gdCPaN5 //初始化页面时验证是否记住了密码 $(document).ready(function ...

  5. Java后台代码调用Spring的@Service Bean的方式

    比如:在我的project中有一个类CompassIndexOperation,以: @Service("CompassIndexOperation") @Transactiona ...

  6. java调用Linux执行Python爬虫,并将数据存储到elasticsearch中--(java后台代码)

    该篇博客主要是java代码,如需相应脚本及java连接elasticsearch工具类代码,请移步到上一篇博客(https://www.cnblogs.com/chenyuanbo/p/9973685 ...

  7. java 后台代码调用接口

    import com.jiuqu.jollykeys.common.util.JsonUtil;import java.io.UnsupportedEncodingException;import j ...

  8. IOS 基于APNS消息推送原理与实现(JAVA后台)

    Push的原理: Push 的工作机制可以简单的概括为下图 图中,Provider是指某个iPhone软件的Push服务器,这篇文章我将使用.net作为Provider. APNS 是Apple Pu ...

  9. 转:IOS 基于APNS消息推送原理与实现(JAVA后台)

    Push的原理: Push 的工作机制可以简单的概括为下图   图中,Provider是指某个iPhone软件的Push服务器,这篇文章我将使用.net作为Provider. APNS 是Apple ...

随机推荐

  1. 关于Jquery使用中遇到典型问题集锦

    ①$.post("url",{search:1},function(){},"json")请求数据成功就是不执行回调函数? 答:最大可能导致原因为 数据格式不正 ...

  2. elasticsearch6 学习之并发控制

    环境:elasticsearch6.1.2        kibana6.1.2  并发问题无处不在 一.基于_version 的并发控制 在提交数据前先检查提交数据的version与es中存储的ve ...

  3. UVAlive4080_Warfare And Logistics

    给一个无向图,求出两个值,所有点到所有其他点的最短距离和,任意删除一条边后的这个值. 数据规模是100点1000边. 白书例题,不多说了直接对于每个点求出最短路树,对于每条边,如果它不是最短路树上的边 ...

  4. 虚拟机VMware的安装

    什么是虚拟软件: 虚拟软件是一个可以使你在一台机器上同时运行二个或更多Windows.LINUX等系统.它可以模拟一个标准PC环境.这个环境和真实的计算机一样,都有芯片组.CPU.内存.显卡.声卡.网 ...

  5. Day22-Django之信号

    1. 如果往数据库中增加数据的时候,希望生成一个日志.在数据保存之前以及保存之后. Django中提供了“信号调度”,用于在框架执行操作时解耦.通俗来讲,就是一些动作发生的时候,信号允许特定的发送者去 ...

  6. c++11 语言级线程

    c++11 语言级线程 线程的创建 用std::thread创建线程非常简单,只需要提供线程函数或函数对象即可,并且可以同时指定线程函数的参数. #define _CRT_SECURE_NO_WARN ...

  7. digitalworld.local: MERCY靶机入侵

    0x01 前言 MERCY是一个致力于PWK课程安全的靶机系统.MERCY是一款游戏名称,与易受攻击的靶机名称无关.本次实验是攻击目标靶机获取root权限并读系统目录中的proof.txt信息 靶机的 ...

  8. Android仿iPhone 滚轮控件 实现

    Android_开发 实用滚轮效果选择数字http://blog.csdn.net/zhangtengyuan23/article/details/8653771 Android仿iPhone滚轮控件 ...

  9. 解题:WC 2007 石头剪刀布

    题面 要我们把边定向,最大化留下来的三元环数目......并不能直接做,考虑容斥,去掉不合法的数目. 那么三个点不成环当且仅当有一个点出度为2一个点入度为2,发现最终答案就是$C_n^3-\sum C ...

  10. 【bzoj3881】【Coci2015】Divljak

    题解 对$S$集合ac建自动机,把$T_{i}$放在里面跑,记录路径上的所有节点并对它们在fail树上求到root的树链并: 这样就得到了$T_{i}$所有的子串: 动态将$T_{i}$加入直接用树状 ...