现在网站为了防止恶意注册,一般用户必须进行激活账户,然后才算激活成功,这样可以在一定程度上减少恶意攻击。本博客使用JavaMail提供方法实现。
java mail 发送邮件步骤
(1) 创建邮件发送信息Properties文件
Properties props = new Properties();
props.setProperty("mail.smtp.auth", "true");//发送邮件时是否进行验证
props.setProperty("mail.transport.protocol", "smtp");//邮件协议pop3或smtp
(2) 创建邮件会话Session
Session session =Session.getInstance(props);//使用上一步创建的Properpties
(3) 创建邮件Message
Message msg = newMimeMessage(session);
//设置邮件主题
msg.setSubject("遂平县仁安医院欢迎您的注册");
//设置邮件内容
msg.setContent("邮件内容","text/html;charset=utf-8");
//设置邮件发件人
msg.setFrom(new InternetAddress("xxxx@163.com"));//服务器账户
//设置邮件发送日期
msg.setSentDate(new Date());
(4)创建发送邮件
Transport transport =session.getTransport();
//登录服务器发送邮件时,进行身份验证
transport.connect("smtp.163.com",25, "xxxx163", "xxxx");
//发送邮件
transport.sendMessage(msg,
new Address[]{newInternetAddress(map.get("email").toString())});
transport.close();
具体里子如下:
public static void sendAccountActivateEmail(Map<String, Object> map) {
Properties props = new Properties();
props.setProperty("mail.smtp.auth", "true");
props.setProperty("mail.transport.protocol", "smtp");
Session session = Session.getInstance(props);
//session.setDebug(true);
Message msg = new MimeMessage(session);
//msg.setContent("<a href='http://localhost:8080/Project/patient_activateAccount.action' >点击激活用户</a>,如果不是您没注册,请忽略此邮件", "text/html;charset=utf-8");
try {
msg.setContent("<a href='"+GenerateLinkUtils.generateActivateLink(map)+"' >点击激活用户</a>,如果不是您没注册,请忽略并删除此邮件","text/html;charset=utf-8");
msg.setFrom(new InternetAddress("xxxx@163.com"));//此处邮箱换成你自己服务器邮箱
msg.setSubject("遂平县仁安医院欢迎您的注册");
msg.setSentDate(new Date());
Transport transport = session.getTransport();
transport.connect("smtp.163.com", 25, "username", "password");
transport.sendMessage(msg,
new Address[]{new InternetAddress(map.get("email").toString())});
transport.close();
} catch (AddressException e) {
e.printStackTrace();
} catch (MessagingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}