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层代码:
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后台代码发送邮件的更多相关文章
- pagebean pagetag java 后台代码实现分页 demo 前台标签分页 后台java分页
java 后台代码实现分页 demo 实力 自己写的 标签分页 package com.cszoc.sockstore.util; import java.util.HashMap;import ja ...
- iOS 基于APNS消息推送原理与实现(包括JAVA后台代码)
Push的原理: Push 的工作机制可以简单的概括为下图 图中,Provider是指某个iPhone软件的Push服务器,这篇文章我将使用.net作为Provider. APNS 是Apple ...
- js脚本中执行java后台代码
使用场景:关闭页面弹窗时执行sql语句. 其实js里执行sql语句有多种方式. 方式一:直接在js代码里调用sql语句,原则上不能使用,因为这将sql直接暴露在客户端,安全性极差. 方式二:在js里运 ...
- jquery.cookie.js && java后台代码 操作cookie实现记住当前用户输入信息代码
下载jquery.cookie.js地址看这里:http://pan.baidu.com/s/1gdCPaN5 //初始化页面时验证是否记住了密码 $(document).ready(function ...
- Java后台代码调用Spring的@Service Bean的方式
比如:在我的project中有一个类CompassIndexOperation,以: @Service("CompassIndexOperation") @Transactiona ...
- java调用Linux执行Python爬虫,并将数据存储到elasticsearch中--(java后台代码)
该篇博客主要是java代码,如需相应脚本及java连接elasticsearch工具类代码,请移步到上一篇博客(https://www.cnblogs.com/chenyuanbo/p/9973685 ...
- java 后台代码调用接口
import com.jiuqu.jollykeys.common.util.JsonUtil;import java.io.UnsupportedEncodingException;import j ...
- IOS 基于APNS消息推送原理与实现(JAVA后台)
Push的原理: Push 的工作机制可以简单的概括为下图 图中,Provider是指某个iPhone软件的Push服务器,这篇文章我将使用.net作为Provider. APNS 是Apple Pu ...
- 转:IOS 基于APNS消息推送原理与实现(JAVA后台)
Push的原理: Push 的工作机制可以简单的概括为下图 图中,Provider是指某个iPhone软件的Push服务器,这篇文章我将使用.net作为Provider. APNS 是Apple ...
随机推荐
- php curl常用的5个例子
转载:http://www.jb100.net/html/content-22-821-1.html php curl常用的5个例子 我用php ,curl主要是抓取数据,当然我们可以用其他的方法 ...
- linux 负载均衡配置 keepalive lvs 使用nginx转发 CentOS7 搭建LVS+keepalived负载均衡
最近希望能够配置一下负载均衡,在虚拟机上面,但是网上找了很多资料很零散,对于不了解的人,很多不够详细,最近终于做好了,把具体的步骤写下来,方便各位网友查阅学习 这个实验需要安装nginx如果没有安装过 ...
- 队列java实现
队列是一种线性数据结构,是一种运算受限的线性表,只允许在队尾插入,在队头删除.运算规则是先进先出.恰好和栈相反.栈是先进后出.因为栈只在栈顶做删除和插入. 队列按照存储结构可以分为顺序队列和链式队列. ...
- TortoiseSVN使用svn+ssh协议连接服务器时重复提示输入密码
当使用svn+ssh协议连接svn服务器时,ssh会提示请求认证,由于不是svn客户端程序来完成ssh的认证,所以不会缓存密码. 而svn客户端通常会建立多个版本库的连接,当密码没有缓存的时候,就会重 ...
- P1503 鬼子进村
题目背景 小卡正在新家的客厅中看电视.电视里正在播放放了千八百次依旧重播的<亮剑>,剧中李云龙带领的独立团在一个县城遇到了一个鬼子小队,于是独立团与鬼子展开游击战. 题目描述 描述 县城里 ...
- 【模考】2018.04.08 Travel
Description 有N个人出去旅行,第i个人去A国有Ai种游玩方式,去B国有Bi种游玩方式,问至少有C个人去A国的情况下,所有人的游玩方式有多少种不同的可能. 两种所有人的游玩方式不同当且仅当存 ...
- 【刷题】BZOJ 2301 [HAOI2011]Problem b
Description 对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y) = k,gcd(x,y)函数为x和y的最大公约数. Input 第一行一个整数 ...
- Java之IO流(字节流,字符流)
IO流和Properties IO流 IO流是指计算机与外部世界或者一个程序与计算机的其余部分的之间的接口.它对于任何计算机系统都非常关键, 因而所有 I/O 的主体实际上是内置在操作系统中的.单独的 ...
- 在eclipse中安装 Activiti Designer插件
转: Activiti系列——如何在eclipse中安装 Activiti Designer插件 这两天在评估jbpm和Activiti,需要安装一个Activiti Designer插件试用一下. ...
- java CPU 100% 排查(转载)
一个应用占用CPU很高,除了确实是计算密集型应用之外,通常原因都是出现了死循环. (友情提示:本博文章欢迎转载,但请注明出处:hankchen,http://www.blogjava.net/hank ...