JAVA发送邮件相关
Posted 人间烟火地三鲜
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA发送邮件相关相关的知识,希望对你有一定的参考价值。
- 发送激活邮件
-
- 电子邮箱:邮件服务器上的一块空间;
- 邮件服务器:类比于web服务器(tomcat),有相应的服务器软件;
- 邮件协议:大公司发送和接收服务器分开,也可以都用一个服务器。
SMTP:简单的邮件发送协议;
POP3:接收邮件的一个协议;
-
- 邮件发送的全过程:理论上需要联网,但是通过搭建在本地的服务器,可以在本地进行邮件的发送。
-
- 搭建邮箱服务器:
-
- 安装邮箱服务器(易邮邮箱服务器,就按默认的安装在C盘)
- 打开该服务器,修改域名:工具-->服务器设置-->单域名改为自定义,例如:shop.com。
- 注册几个内部账号:账号-->新建账号。密码设为55555
- 注册一个自定义的官方账号:service 密码:55555
- 安装邮件客户端软件(可以接发邮件):避免了网页版session的过期离线问题。
-
- 流行的有软件有:outlook(微软收费)、foxmail(免费,选用foxmail)
- 配置
* 配置发送邮件服务器:localhost
* 配置接收邮件服务器:localhost
-
- 编码实现邮件发送(见MailUtils.java)
- 用户激活
- 在邮箱客户端中点击激活链接:
-
- 根据链接中传递的激活码进行查询
* 如果用户不为空:修改用户状态:0 --> 1,向前台传递激活成功消息。
* 如果用户为空:激活码失效或被篡改,向前台传递激活失败消息。
import java.util.Properties;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.Message.RecipientType;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
/**
* 发送邮件工具类
*/
public class MailUtils {
/**
* 发送邮件的方法
* @param to 收件人
* @param code 激活码
*/
public static void sendMail(String to, String code){
/**
* 1.获得一个session对象
* 2.创建一个代表邮件的对象的Message
* 3.发送邮件Transport
*/
//1.获得一个session对象
Properties props = new Properties();
props.setProperty("mail.host", "localhost");//指定发送邮件的主机是谁:localhost
Session session = Session.getInstance(props, new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("[email protected]", "55555");
}
});
//2.创建一个代表邮件的对象的Message
Message message = new MimeMessage(session);
try {
//2.1:设置发件人
message.setFrom(new InternetAddress("[email protected]"));
//2.2:设置收件人
/*抄送:CC ; 密送:BCC*/
message.addRecipient(RecipientType.TO, new InternetAddress(to));
//2.3:设置邮件标题
message.setSubject("官方账号激活邮件!");
//2.4:设置邮件正文
message.setContent("<h2>欢迎您XXXX,这是唯唯乐购官方发送的账号激活邮件正文,请勿泄露<br/>此邮件,以免给用户带来损失!请点击后面的链接完成账户激活操作。</h2><h3><a href=‘http://127.0.0.1:8080/XXXX/user_active.action?code="+code+"‘>http://127.0.0.1:8080/Shopping/user_active.action/code="+code+"</a></h3>", "text/html;charset=UTF-8");
//3.发送邮件
Transport.send(message);
} catch (AddressException e) {
e.printStackTrace();
} catch (MessagingException e) {
e.printStackTrace();
}
}
public static void main(String[] args){
sendMail("[email protected]", "55555");
}
}
用户激活的action方法:
用户激活的action方法:
/**
* 用户激活的方法
*/
public String active() {
// 根据激活码查询用户:
User existUser = userService.findByCode(user.getCode());
// 判断
if (existUser == null) {
// 激活码错误的
this.addActionMessage("激活失败:激活码错误!");
} else {
// 激活成功
// 修改用户的状态
existUser.setState(1);
existUser.setCode(null);
userService.update(existUser);
this.addActionMessage("激活成功:请去登录!");
}
return "msg";
}
以上是关于JAVA发送邮件相关的主要内容,如果未能解决你的问题,请参考以下文章