今天有个朋友向我请教项目中发邮件的相关问题,结果发现自己也记不太清了,回顾了一下之后觉得得记一下。
首先需要导入jar包(jar包下载链接)
maven项目也可以直接引用依赖
<dependencies>
<!--java邮件-->
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.7</version>
</dependency>
</dependencies>
下面是工具类
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Properties;
public class EmailUtils {
//参数分别为收件人的邮箱,邮件标题,邮件内容
public static void sendEmail(String sendUser,String title,String content ) throws MessagingException {
// 配置发送邮件的环境属性
final Properties props = new Properties();
// 表示SMTP发送邮件,需要进行身份验证
props.put("mail.smtp.auth", "true");//需要验证
props.put("mail.smtp.host", "smtp.qq.com");//邮箱的服务器,qq的就是smtp.qq.com,163的是smtp.163.com
props.put("mail.user", "xxxx@qq.com");// 发件人的账号
props.put("mail.password", "填写的是授权码");// 访问SMTP服务时需要提供的密码
// 构建授权信息,用于进行SMTP进行身份验证
Authenticator authenticator = new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
// 用户名、密码
String userName = props.getProperty("mail.user");
String password = props.getProperty("mail.password");
return new PasswordAuthentication(userName, password);
}
};
// 使用环境属性和授权信息,创建邮件会话
Session mailSession = Session.getInstance(props, authenticator);
// 创建邮件消息
MimeMessage message = new MimeMessage(mailSession);
// 设置发件人
InternetAddress form = new InternetAddress(props.getProperty("mail.user"));
message.setFrom(form);
// 设置收件人
InternetAddress sendUserMail = new InternetAddress(sendUser);
message.setRecipient(Message.RecipientType.TO, sendUserMail);
// 设置邮件标题
message.setSubject(title);
// 设置邮件的内容体
message.setContent(content, "text/html;charset=UTF-8");
// 发送邮件
Transport.send(message);
}
}
测试
@Test
public void test2(){
String sendUser = "收件人邮箱";
String title = "邮件标题";
String content = "要发送的内容";
try {
EmailUtils.sendEmail(sendUser,title,content);
} catch (MessagingException e) {
e.printStackTrace();
log.info("邮件发送失败");
}
}
效果
注:大部分邮箱的SMTP功能都是默认关闭的,需要自己开启,并获取授权码(获取授权码方式)