Java工具类-发送邮件支持HTM
1. 导入Maven坐标
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.7</version>
</dependency>
2. 创建Java发送邮件工具类
/**
* 发送邮件工具类
*/
public class SendEmailUtils {
private String user; // 发件人称号,同邮箱地址
private String password; // 如果是qq邮箱可以使户端授权码,或者登录密码
private String host; // 指定发送邮件的主机QQ为 smtp.qq.com
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getHost() {
return host;
}
public void setHost(String host) {
this.host = host;
}
/**
* 创建邮件发送的对象
*
* @param USER 发件人称号,同邮箱地址
* @param PASSWORD 如果是qq邮箱可以使户端授权码,或者登录密码
* @param HOST 指定发送邮件的主机QQ为 smtp.qq.com
*/
public SendEmailUtils(String USER, String PASSWORD, String HOST) {
this.user = USER;
this.password = PASSWORD;
this.host = HOST;
}
/**
* 发送邮件 支持HTML标签
* @param toEmail 邮件接收方的邮箱
* @param headText 邮件的头部主题信息
* @param bodyText 邮件的主体部分实质内容
* @return 成功返回true 失败返回false
*/
public boolean send(String toEmail, String headText, String bodyText) {
// 获取系统属性
Properties properties = System.getProperties();
// 设置邮件服务器
properties.setProperty("mail.smtp.host", getHost());
properties.put("mail.smtp.auth", "true");
// 获取默认session对象
Session session = Session.getDefaultInstance(properties, new Authenticator() {
public PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(getUser(), getPassword()); //发件人邮件用户名、授权码
}
});
boolean success = true;
try {
// 创建默认的 MimeMessage 对象
MimeMessage message = new MimeMessage(session);
// Set From: 头部头字段
message.setFrom(new InternetAddress(user));
// Set To: 头部头字段
message.addRecipient(Message.RecipientType.TO,
new InternetAddress(toEmail));
// Set Subject: 头部头字段
message.setSubject(headText);
// 设置邮件的内容体
message.setContent(bodyText, "text/html;charset=UTF-8");
// 发送消息
Transport.send(message);
} catch (MessagingException mex) {
success =false;
mex.printStackTrace();
}
return success;
}
}
3. 使用Java工具类
- QQ邮箱授权码需要在QQ邮箱中获取
- 别的邮箱的授权码可以百度搜索在哪里获取,一般情况下QQ使用的比较多
public static void main(String[] args) {
String user = "xxx@qq.com"; // 发件人称号,同邮箱地址
String password = "邮箱授权码"; // 如果是qq邮箱可以使户端授权码,或者登录密码
String host = "smtp.qq.com"; // 指定发送邮件的主机QQ为 smtp.qq.com
SendEmailUtils sendEmailUtils = new SendEmailUtils(user,password,host);
String toEmail="xxx@qq.com";
String head="头信息";
String body="<h1>主题信息</h1>";
boolean send = sendEmailUtils.send(toEmail, head, body);
System.out.println("send = " + send);
}