最近在写用户注册功能的时候,需要使用邮箱来绑定用户。这就需要发送验证码给用户邮箱来验证,所以想学习一下Java程序发送邮件。
如果想让邮箱支持客户端发送邮件,则需要开启自己邮箱的POP3/SMTP服务和授权码(该授权码在程序中需要使用)。
此处以我的网易邮箱为例:


使用Java程序发送邮件,需要使用到两个jar包:mail.jar、activation.jar。需要的jar包可以去mvnrepository.com/获取,我创建的是maven项目,所以直接在pom文件中加依赖。
<dependencies>
<!-- https://mvnrepository.com/artifact/javax.mail/mail -->
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.7</version>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.activation/activation -->
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>1.1.1</version>
</dependency>
</dependencies>
程序代码如下:
public class MailDemo {
public static void main(String[] args) throws Exception {
//创建配置文件
Properties properties = new Properties();
//设置邮件服务器
properties.setProperty("mail.host", "smtp.163.com");
//设置邮件发送协议
properties.setProperty("mail.transport.protocol", "smtp");
//是否需要验证用户名和密码
properties.setProperty("mail.smtp.auth", "true");
//设置SSL加密
MailSSLSocketFactory mailSSLSocketFactory = new MailSSLSocketFactory();
mailSSLSocketFactory.setTrustAllHosts(true);
properties.put("mail.smtp.ssl.enable", "true");
properties.put("mail.smtp.ssl.socketFactory", mailSSLSocketFactory);
//使用JavaMail发送邮件的5个步骤
//1.创建 Session 对象
Session session = Session.getDefaultInstance(properties,new Authenticator() {
@Override
public PasswordAuthentication getPasswordAuthentication() {
// 这里的邮箱授权码指的是自己邮箱的邮箱授权码 需要到自己的邮箱开启
return new PasswordAuthentication("15775960389@163.com", "邮箱授权码");
}
});
//开启Session的debug模式(可以查看到程序发送Email的运行状态)
session.setDebug(true);
//2.获取transport对象
Transport transport = session.getTransport();
//3.使用邮箱的用户名和授权码连上邮件服务器
transport.connect("smtp.163.com", "15775960389@163.com", "邮箱授权码");
//4.创建邮件
MimeMessage message = new MimeMessage(session);
//设置发件人
message.setFrom(new InternetAddress("15775960389@163.com"));
//设置收件人
message.setRecipient(Message.RecipientType.TO, new InternetAddress("807566806@qq.com"));
//邮件标题
message.setSubject("这是邮件的标题");
//邮件内容
message.setContent("这是邮件内容", "text/html;charset=UTF-8");
//5.发送邮件
transport.sendMessage(message, message.getAllRecipients());
//释放资源
transport.close();
}
}
直接运行程序,即可发送邮件。
不同的邮箱地址有不同的邮箱服务器,可以自己去查询自己所需要的。程序中的各种属性也可根据自己的需求去更改。