将已经保存在数据库中的密码通过邮件发送到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. 第十章 DOM

    10.1节点层次 html元素通过元素节点表示,特性节点通过特性节点表示,文档类型节点通过文档类型节点访问,这些类型都继承一个基类型. 10.1.1 Node类型 JavaScript中的所有节点类型 ...

  2. [delphi]运行cmd命令,并取得输出字符

     http://blog.csdn.net/nerdy/article/details/8969189 [delphi]运行cmd命令,并取得输出字符 标签: delphiCMD命令 2013-05- ...

  3. 有关Select option 元素

    动态添加option元素以及option元素被选中方法: function getType() { ); shadowCoverTipAdd("加载中,请稍候.."); $.aja ...

  4. jshint创建配置文件

    在项目中创建文件,并必须以 .jshintrc 命名: 例如 {    "eqeqeq":true,     "curly":true}

  5. Appium学习路—脚本篇(启动app)

    启动之前的准备   1.脚本执行前,需要先启动appium的server端, 启动server方法: 打开appium客户端,点击右上角的Launch     2.iOS的测试只能在mac本上做   ...

  6. LDAP与SSH

    一般情况下,客户端配置好之后,ssh是可以直接用的,若不能,则需手动配置 1:vim /etc/ssh/sshd_config 把UsePAM改成yes 2:在vim /etc/pam.d/sshd添 ...

  7. LeetCode OJ 112. Path Sum

    Given a binary tree and a sum, determine if the tree has a root-to-leaf path such that adding up all ...

  8. NPOI 2.0版本的使用

    详细教程: http://blog.csdn.net/xxs77ch/article/details/50216033 using System; using System.Collections.G ...

  9. 第一章 删掉centos原有的openjdk并安装sun jdk

    一.卸载原有openjdk rpm -qa | grep java 之后,将展示出来的全部卸载掉,我这里是5个 rpm -e --nodeps java-1.7.0-openjdk-1.7.0.111 ...

  10. greendao对SQLite数据库的增删改查操作

    利用greendao操作数据库时,都是以对象或者对象的list来进行增删改查的操作,操作的结果都是用一个list来接收的!!! 1.增加一条记录 Stu stu01=new Stu();stu01.s ...