先添加Session依赖
<!-- 发送邮箱Session注册 -->
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>javax.mail</artifactId>
<version>1.5.6</version>
</dependency>
依赖导入成功之后添加一个工具类
服务器地址根据开启的服务器为准,我这边开通的是网易的
服务器地址不清楚的话一般都会有提示的如网易的提示就是在开启服务页面的最下面
密码则是开启服务时生成的授权密码(注:一定要保存该授权密码)
import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import java.util.Properties;
public class SendEmailUtils {
public static Session createsession() {
// SMTP服务器地址
String smtp = "smtp.163.com";
// 邮箱账号和密码(授权密码)
String userName = "邮箱账号";
String password = "密码(授权密码)";
// SMTP服务器的连接信息
Properties props = new Properties();
props.put("mail.smtp.host", smtp); // SMTP主机号
props.put("mail.smtp.port", "25"); // 主机端口号
props.put("mail.smtp.auth", "true"); // 是否需要认证
props.put("mail.smtp.starttls.enable", "true"); // 启用TLS加密
// 创建Session
// 参数1:SMTP服务器的连接信息
// 参数2:用户认证对象(Authenticator接口的匿名实现类)
Session session = Session.getInstance(props, new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(userName, password);
}
});
// 开启调试模式
session.setDebug(true);
return session;
}
}
完成上面的内容之后就可以进行测试
public class Test {
public static void main(String[] args) {
try {
// 1.创建Session
Session session = SendEmailUtils.createsession();
// 2.创建邮件对象(Message抽象类的子类对象)
MimeMessage msg = new MimeMessage(session); // 传入session
msg.setFrom(new InternetAddress("邮箱号")); // 发件人
msg.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress("邮箱号")); // 收件人
msg.setRecipient(MimeMessage.RecipientType.CC, new InternetAddress("邮箱号")); // 抄送人
msg.setSubject("测试","utf-8"); // 标题
msg.setText("你好!!!","utf-8"); // 正文
// 3.发送
Transport.send(msg);
} catch (MessagingException e) {
e.printStackTrace();
}
}
}
若是出现以下错误则仔细检测一下服务器地址、邮箱和授权码是否对应上
javax.mail.AuthenticationFailedException: 535 Error: authentication failed