public class EmailUtil {
private static Logger logger = Logger.getLogger(EmailUtil.class);
/**
* 发送邮箱服务器地址
*/
public static final String SERVER_ADDR = "****.163.com";
/**
* 发送邮箱服务器端口
*/
public static final String SERVER_PORT = "***";
/**
* 发送邮箱账号
*/
public static final String EMAIL = "******";
/**
* 邮箱全路径
*/
public static final String EMAIL_FUll = EMAIL + "@163.com";
/**
* 授权码(非登录密码)
*/
public static final String PASSWORD = "*******";
方法一:
/**
* 发送邮件通用方法
*
* @param title
* @param content
* @param email
* @return
*/
public static String sendEmail(String title, String content, String email) {
try {
Properties prop = new Properties();
prop.setProperty("mail.host", SERVER_ADDR);
prop.setProperty("mail.transport.protocol", "smtp");
prop.setProperty("mail.smtp.auth", "true");
// 使用JavaMail发送邮件的5个步骤
// 1、创建session
Session session = Session.getInstance(prop);
// 开启Session的debug模式,这样就可以查看到程序发送Email的运行状态
// session.setDebug(true);
// 2、通过session得到transport对象
Transport ts = session.getTransport();
// 3、使用邮箱的用户名和密码连上邮件服务器,发送邮件时,发件人需要提交邮箱的用户名和密码给smtp服务器,用户名和密码都通过验证之后才能够正常发送邮件给收件人。
ts.connect(SERVER_ADDR, EMAIL, PASSWORD);
// 4、创建邮件
MimeMessage message = new MimeMessage(session);
// 指明邮件的发件人
message.setFrom(new InternetAddress(EMAIL_FUll));
// 指明邮件的收件人
message.setRecipient(Message.RecipientType.TO, new InternetAddress(email));
// 邮件的标题
message.setSubject(title);
// 邮件的文本内容
message.setContent(content, "text/html;charset=UTF-8");
// 5、发送邮件
ts.sendMessage(message, message.getAllRecipients());
ts.close();
return "1";
} catch (Exception e) {
logger.error("发送邮件失败", e);
return "0";
}
}
方法二:
/**
* 发送邮件通用方法 SSL
*
* @param title
* @param content
* @param email
* @return
*/
@SuppressWarnings("restriction")
public static String sendEmailSSl(String title, String content, String email) {
try {
// 设置SSL连接、邮件环境
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";
Properties props = System.getProperties();
props.setProperty("mail.smtp.host", SERVER_ADDR);
props.setProperty("mail.smtp.socketFactory.class", SSL_FACTORY);
props.setProperty("mail.smtp.socketFactory.fallback", "false");
props.setProperty("mail.smtp.port", SERVER_PORT);
props.setProperty("mail.smtp.socketFactory.port", SERVER_PORT);
props.setProperty("mail.smtp.auth", "true");
// 建立邮件会话
Session session = Session.getDefaultInstance(props, new Authenticator() {
// 身份认证
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(EMAIL, PASSWORD);
}
});
// 建立邮件对象
MimeMessage message = new MimeMessage(session);
// 设置邮件的发件人、收件人、主题
message.setFrom(new InternetAddress(EMAIL_FUll));
message.setRecipients(Message.RecipientType.TO, email);
message.setSubject(title);
// 文本部分
MimeBodyPart textPart = new MimeBodyPart();
textPart.setContent(content, "text/html;charset=UTF-8");
MimeMultipart mmp1 = new MimeMultipart();
mmp1.addBodyPart(textPart);
mmp1.setSubType("related");
// 将以上内容添加到邮件的内容中并确认
message.setContent(mmp1);
message.saveChanges();
// 发送邮件
Transport.send(message);
return "1";
} catch (Exception e) {
logger.error("发送邮件失败", e);
return "0";
}
}
//邮箱接收的随机验证码
/**
* 根据输入的字符长度返回随机的纯数字字符串
* @param length 随机的纯数字字符串长度
* @return
*/
public static String getRandomNum(Integer length) {
String sources = "0123456789";
Random rand = new Random();
StringBuffer randomCode = new StringBuffer();
for (int j = 0; j < length; j++) {
randomCode.append(sources.charAt(rand.nextInt(9)) + "");
}
return randomCode.toString();
}
}