发送邮件功能
找回密码的功能几乎是所有的项目所必备的功能,目前最流行的方式之一便是通过发送邮件的方式,发送给用户修改密码的链接,用户通过登录邮箱找到链接地址,从而完成密码的重置。这样的方式相对来说比较安全可靠。这种方式的第一步便是发送邮件。
准备工作:
使用Java发送邮件需要导入以下两个jar包:
- JavaMail
- Java Activation Framework (JAF)
下载链接地址:JavaMail 和JAF jar包下载以及参考文档
以下是使用Java发送邮件的代码:
package cn.com.mp.test;
import java.util.Properties;
import javax.mail.Address;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
public class SendEmail {
public static void main(String [] args) throws MessagingException
{
Properties props = new Properties();
// 开启debug调试
props.setProperty("mail.debug", "true");
// 发送服务器需要身份验证
props.setProperty("mail.smtp.auth", "true");
// 设置邮件服务器主机名 使用163邮箱发送
props.setProperty("mail.host", "smtp.163.com");
// 发送邮件协议名称
props.setProperty("mail.transport.protocol", "smtp");
// 设置环境信息
Session session = Session.getInstance(props);
// 创建邮件对象
Message msg = new MimeMessage(session);
try {
msg.setSubject("邮件主题");
} catch (MessagingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// 设置邮件内容
msg.setText("邮件内容,找回密码的连接");
// 设置发件人
msg.setFrom(new InternetAddress("18189530509@163.com"));
Transport transport = session.getTransport();
// 连接邮件服务器 xzbbrvnlsjpdbfei
transport.connect("18189530509@163.com", "不是登录密码,需要开启客户授权密码,生成授权码,此处填写授权码");
// 发送邮件
transport.sendMessage(msg, new Address[] {new InternetAddress("目标地址,即接收邮件的邮箱地址")});
// 关闭连接
transport.close();
}
}
以163邮箱为例,生成客户授权密码的方式如下:
同样使用qq邮箱发送邮件时,也需要开启:
这样就完成了,发送的邮件的功能,从而为下一步实现找回密码提供了基本条件。
完整例子下载地址:sendEmailDemo
由于时间问题,详细完善后在后期进行。