将已经保存在数据库中的密码通过邮件发送到qq邮箱中。用的ssm框架,其中的config文件要先配置好。

    用到的jar包有gson-2.2.1.jar,gson.jar,mail.jar,activation.jar

  1.entity类(WmUser.java)

public class WmUser {
private String userName;
private String userPsw;
private String email;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserPsw() {
return userPsw;
}
public void setUserPsw(String userPsw) {
this.userPsw = userPsw;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
} public WmUser( String userName, String userPsw,
String email) {
super();
this.userName = userName;
this.userPsw = userPsw;
this.email = email;
}
public WmUser() {
super();
// TODO Auto-generated constructor stub
} }

2.dao层

    UserMapper.java,是一个接口

public interface UserMapper {
//根据用户名和邮箱查找用户密码
public List<WmUser> findAllUser(WmUser wmUser);
}

    UserMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.etc.dao.UserMapper" >
<!-- 查找密码 -->
<select id="findAllUser" parameterType="com.etc.entity.WmUser" resultType="com.etc.entity.WmUser" >
select userPsw from wm_user where userName=#{userName} and email=#{email}
</select> </mapper>

3.Biz层

  UserBiz.java(接口)

public interface UserBiz {
//找回密码
public List<WmUser> findAllUser(WmUser wmUser);
}

  UserBizImpl.java

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;

import com.etc.biz.UserBiz;
import com.etc.dao.UserMapper;
import com.etc.entity.WmUser; public class UserBizImpl implements UserBiz {
@Autowired
UserMapper userMapper; //查找密码
public List<WmUser> findAllUser(WmUser wmUser) {
List<WmUser> user=userMapper.findAllUser(wmUser);
return user;
}
}

4.controller层

import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Properties; import javax.mail.Authenticator;
import javax.mail.Message.RecipientType;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping; import com.etc.biz.UserBiz;
import com.etc.entity.WmUser;
import com.google.gson.Gson; @Controller
public class UserController {
private static final Logger logger=LoggerFactory.getLogger(CompanyController.class);
private static List<WmUser> list = new ArrayList<WmUser>();
@Autowired
UserBiz userBiz; //修改密码
@RequestMapping("/modPsw.action")
public void modPsw(HttpServletRequest request, HttpServletResponse response,WmUser wmUser)
throws Exception {
request.setCharacterEncoding("utf-8");
response.setContentType("application/json;charset=utf-8");
PrintWriter out = response.getWriter();
//获取从页面传递过来的用户名和邮箱
String userName=request.getParameter("userName2");
String email=request.getParameter("email1");
wmUser.setUserName(userName);
wmUser.setEmail(email);
list=userBiz.findAllUser(wmUser);
Gson gson = new Gson();
//获取到从数据库中查询出来的密码
String str = gson.toJson(list.get(0).getUserPsw()); //发送邮件
// 创建Properties 类用于记录邮箱的一些属性
final Properties props = new Properties();
// 表示SMTP发送邮件,必须进行身份验证
props.put("mail.smtp.auth", "true");
//此处填写SMTP服务器
props.put("mail.smtp.host", "smtp.qq.com");
//端口号,QQ邮箱给出了两个端口
props.put("mail.smtp.port", "587");
// 此处填写发件人的账号(qq邮箱)
props.put("mail.user", "发件人邮箱");
// 此处的密码就是前面说的16位STMP口令
props.put("mail.password", "在邮箱的账号中STMP授权码"); // 构建授权信息,用于进行SMTP进行身份验证
Authenticator authenticator = new Authenticator() { protected PasswordAuthentication getPasswordAuthentication() {
// 用户名、密码
String userName = props.getProperty("mail.user");
String password = props.getProperty("mail.password");
return new PasswordAuthentication(userName, password);
}
}; //生成系统当前时间
Date date = new Date(); //format对象是用来以指定的时间格式格式化时间的
SimpleDateFormat from = new SimpleDateFormat( "yyyy年MM月dd日 HH时mm分ss秒"); //这里的格式可以自己设置
//format()方法是用来格式化时间的方法
String times = from.format(date); // 使用环境属性和授权信息,创建邮件会话
Session mailSession = Session.getInstance(props, authenticator);
// 创建邮件消息
MimeMessage message = new MimeMessage(mailSession);
// 设置发件人
InternetAddress form = new InternetAddress(
props.getProperty("mail.user"));
message.setFrom(form); // 设置收件人的邮箱
InternetAddress to = new InternetAddress("收件人邮箱");
message.setRecipient(RecipientType.TO, to); // 设置邮件标题
message.setSubject("修改密码"); // 设置邮件的内容体
message.setContent("尊敬的"+userName+"用户,您好!\r\n您在"+times+"提交找回密码请求,您的新密码为"+str+",请您登录后重新修改密码。\n如果您没有进行过找回密码的操作,请不要进行任何操作,并删除此邮件。谢谢!", "text/html;charset=UTF-8"); // 最后当然就是发送邮件啦
Transport.send(message); }
}

5.页面设置(denglu.jsp)

        <form action="modPsw.action" method="post">
<table>
<tr>
<td>用户名:</td>
<td><input type="text" id="userName2" name="userName2">
</td>
</tr>
<tr>
<td>邮箱:</td>
<td><input type="text" id="email1" name="email1"/></td>
</tr>
<tr>
<td colspan="2"><input type="button" value="返回">
<input type="submit" value="找回密码">
</td>
</tr>
</table>
</form>

MVC模式下向qq邮箱发送邮件的更多相关文章

  1. MongoDB学习笔记(三) 在MVC模式下通过Jqgrid表格操作MongoDB数据

    看到下图,是通过Jqgrid实现表格数据的基本增删查改的操作.表格数据增删改是一般企业应用系统开发的常见功能,不过不同的是这个表格数据来源是非关系型的数据库MongoDB.nosql虽然概念新颖,但是 ...

  2. ecshop QQ邮箱发送邮件服务器配置

    ecshop QQ邮箱发送邮件服务器配置 1.邮件服务:采用其他的SMTP服务 2.邮件服务器是否要求加密连接(SSL): 是 此项设置需要php支持openSSL模块 开启方法: a.php.ini ...

  3. python3通过qq邮箱发送邮件

    python3通过qq邮箱发送邮件 0.了解qq邮箱的SMTP QQ邮箱 POP3 和 SMTP 服务器地址设置如下: 邮箱 POP3服务器(端口995) SMTP服务器(端口465或587) qq. ...

  4. 基于java mail实现简单的QQ邮箱发送邮件

    刚学习到java邮件相关的知识,先写下这篇博客,方便以后翻阅学习. -----------------------------第一步 开启SMTP服务 在 QQ 邮箱里的 设置->账户里开启 S ...

  5. legend3---lavarel中使用qq邮箱发送邮件

    legend3---lavarel中使用qq邮箱发送邮件 一.总结 一句话总结: 第一步:配置邮箱做服务器,比如qq邮箱,网易163邮箱 第二步:配置lavarel的配置文件 第三部:写邮件发送代码就 ...

  6. 在MVC模式下通过Jqgrid表格操作MongoDB数据

    看到下图,是通过Jqgrid实现表格数据的基本增删查改的操作.表格数据增删改是一般企业应用系统开发的常见功能,不过不同的是这个表格数据来源是非关系型的数据库MongoDB.nosql虽然概念新颖,但是 ...

  7. 杂项之使用qq邮箱发送邮件

    杂项之使用qq邮箱发送邮件 本节内容 特殊设置 测试代码 1. 特殊设置 之前QQ邮箱直接可以通过smtp协议发送邮件,不需要进行一些特殊的设置,但是最近使用QQ邮箱测试的时候发现以前使用的办法无法奏 ...

  8. MVC模式下My97DatePicker日期控件引用注意事项

    My97DatePicker日期控件之前在用webform模式开发的时候,只要 <script language="javascript" type="text/j ...

  9. SpringBoot使用qq邮箱发送邮件

    最近公司要做一个邮箱注册和重置密码的功能,因为之前就做过,但是不是Springboot项目,所以相对来说还是比较容易的,在这里记录一下. 一.引用Maven依赖 这里使用spring自带的邮件jar包 ...

随机推荐

  1. Backbone框架浅析

    Backbone是前端mvc开发模式的框架.它能够让view和model相分离,让代码结构更清晰简答,开发进度加快,维护代码方便.但是,现在出了一种mvvm框架,它是下一代前端mvc开发模式的框架,代 ...

  2. (转载)SPRINGMVC表单标签简介

    SpringMVC表单标签简介 在使用SpringMVC的时候我们可以使用Spring封装的一系列表单标签,这些标签都可以访问到ModelMap中的内容.下面将对这些标签一一介绍. 在正式介绍Spri ...

  3. Cocos学习-----Cocos2Dx安装

    昨天晚上从官网下载了cocos2dx,打开发现win下工程已经是2010了最少,很是郁闷.尝试着在08下新建工程然后添加文件,发现还是很麻烦,于是下载了vs2010,打开编译报错:error C206 ...

  4. 使用Nginx镜像代理.NET Core MVC

    1.获取microsoft/dotnet镜像 docker pull registry.cn-hangzhou.aliyuncs.com/cjx/tutorial 如果有问题确认已经使用阿里云镜像加速 ...

  5. IDEA内存溢出问题:

    -Xms1024m -Xmx1024m -XX:MaxPermSize=512m 内存泄露是指程序中间动态分配了内存,但在程序结束时没有释放这部分内存,从而造成那部分内存不可用的情况,重启计算机可以解 ...

  6. spring-mybatis jar下载地址

    http://central.maven.org/maven2/org/mybatis/mybatis-spring/1.3.0/

  7. C#继承里的【就近原则】

    参考博客:http://www.cnblogs.com/waynechan/p/3570702.html#2883966 参考书籍:<你必须知道的.NET>,作者王涛http://www. ...

  8. NetBIOS发包

    [NetBIOS发包] 1.拥有 LANA.Local Session Num即可发包. ncb_lsn,session号.指定发向哪. ncb_lana_num,lan-adapter号,指定用哪一 ...

  9. MySQL 5.7版本sql_mode=only_full_group_by问题

    用到GROUP BY 语句查询时com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Expression #2 of SELECT l ...

  10. Ptex源码学习笔记-1

    Ptex是Walt Disney Animation Studios开发的纹理映射工具.在看一个叫appleseed的渲染器时看到他支持这种纹理,所以就查看一下,发现比较轻量,所以就想趁此机会学习下. ...