项目中要用到邮箱验证功能,所有写了一个在项目中用到的邮箱工具类,主要是用在本项目中的,参数都是调用方法的时候传递的值;具体实现代码如下:
package com.scmofit.gps.common;
import java.util.Properties;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
public class EmailUtil {
/**
*
* @Title:sendEmail
* @Description: 邮件发送
* @param:@param request 激活路径
* @param:@param from 发件人电子邮箱
* @param:@param authCode 授权码或密码
* @param:@param reader 收件人电子邮箱
* @param:@param imgUrl 图标icon
* @param:@param userName 注册用户名
* @param:@param expirationTime 失效时长(分钟)
* @return:void
* @throws
*/
public static void sendEmail(String request,String from,String authCode,String reader,String imgUrl,String userName,int expirationTime) {
// 1.创建连接对象javax.mail.Session
// 2.创建邮件对象 javax.mail.Message
// 3.发送一封激活邮件
// String host = "smtp.qq.com"; // 指定发送邮件的主机smtp.qq.com(QQ)|smtp.163.com(网易)
// String code = UUID.randomUUID().toString().replaceAll("-", "");
String host = "smtp.xxxxx.gov.cn";
Properties properties = System.getProperties();// 获取系统属性
// properties.setProperty("mail.smtp.host", host);// 设置邮件服务器
// properties.setProperty("mail.smtp.auth", "true");// 打开认证
properties.setProperty("mail.transport.protocol", "IMAP");
properties.setProperty("mail.smtp.host", host);
properties.setProperty("mail.smtp.port", "25");
// 指定验证为true
properties.setProperty("mail.smtp.auth", "true");
properties.setProperty("mail.smtp.timeout","0");
try {
//QQ邮箱需要下面这段代码,163邮箱不需要
// MailSSLSocketFactory sf = new MailSSLSocketFactory();
// sf.setTrustAllHosts(true);
// properties.put("mail.smtp.ssl.enable", "true");
// properties.put("mail.smtp.ssl.socketFactory", sf);
// 1.获取默认session对象
Session session = Session.getDefaultInstance(properties, new Authenticator() {
public PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(from, authCode); // 发件人邮箱账号、授权码
}
});
// 2.创建邮件对象
Message message = new MimeMessage(session);
// 2.1设置发件人
message.setFrom(new InternetAddress(from));
// 2.2设置接收人
message.addRecipient(Message.RecipientType.TO, new InternetAddress(reader));
// 2.3设置邮件主题
message.setSubject("邮箱激活");
// 2.4设置邮件内容
String content = "<html><head></head><body><div style='height: 50px;background-color: #5F92CA;color: #E9500c;font-size: 30px;'><img src='"+imgUrl+"'/>四川XXXXXXXXXX公司</div>\r\n" +
" <h1>亲爱的<span style='color: red;'>"+userName+"</span>,您好:</h1>\r\n" +
" 感谢您注册本站账号,您的登录用户名:<span style='color: red;'>"+userName+"</span><br /><br />\r\n" +
" 请点击以下链接激活账号:<br />\r\n" +
" <a href='"+request+"'>"+request+"</a>\r\n" +
" <br />\r\n" +
" (如果链接无法点击,请将它复制并粘贴到浏览器的地址栏中访问)\r\n" +
" <br />\r\n" +
" 本邮件是系统自动发送的,请勿直接回复;感谢您的访问,祝您使用愉快。(该链接在5分钟内有效,"+expirationTime+"分钟后点击链接系统将重新发送激活链接)\r\n" +
" <br />\r\n" +
" <br />\r\n" +
" <br />\r\n" +
" <hr />\r\n" +
" <div style='width: 100%;text-align: right;'>四川XXXXXXXXXX公司<br />\r\n" + DateUtil.getNowDates()+
" </div></body></html>";
message.setContent(content, "text/html;charset=UTF-8");
// 3.发送邮件
Transport.send(message);
} catch (Exception e) {
e.printStackTrace();
}
}
}
代码中用到的包是用maven做的
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4</version>
</dependency>