在现代软件开发中,邮件功能是一个非常实用的功能,例如注册验证、通知提醒等场景都会用到。本文将详细介绍如何使用 Java 来发送电子邮件,从开通邮件服务开始,逐步介绍依赖引入、配置以及代码实现。
1. 开通邮件服务
我们可以选择常见的 QQ 邮箱或 163 邮箱来进行邮件发送。这里以 QQ 邮箱为例,开通步骤如下:
开启 POP3/SMTP 服务
登录 QQ 邮箱,点击左上角的“设置” -> “账号”,在“POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV 服务”中开启 POP3/SMTP 服务。按照提示操作,可能需要发送短信进行验证,验证通过后会获得一个授权码,这个授权码在后续配置中会用到。
记录授权码
开启服务后,会弹出一个窗口显示授权码,一定要妥善保存这个授权码,它将作为后续配置中的密码。
2. 引入依赖
我们使用 Spring Boot 来简化开发,所以需要在项目的 pom.xml
文件中引入 spring-boot-starter-mail
依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
3. 配置
在 application.yml
或 application.properties
文件中配置邮件相关信息,以 application.yml
为例:
spring:
# 配置电子邮件信息
mail:
host: smtp.qq.com
port: 465
password: xxxxxxxxxxxx # 这里填写刚才获取的授权码
username: xxxxx@qq.com # 填写你的邮箱地址
protocol: smtps
host
:邮件服务器地址,QQ 邮箱的 SMTP 服务器地址是smtp.qq.com
。port
:端口号,QQ 邮箱使用的端口号是 465。password
:填写刚才获取的授权码。username
:填写你的邮箱地址。protocol
:使用的协议,这里使用smtps
。
4. 编写代码
下面是一个简单的 Java 测试类,包含发送简单文本邮件和带附件的 HTML 邮件的示例:
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.io.File;
@SpringBootTest
public class SendMailTest {
@Autowired
private JavaMailSender javaMailSender;
/**
* 测试发送简单文本邮件
*/
@Test
public void testSendSimpleMail() {
SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
simpleMailMessage.setFrom("34343434@qq.com"); // 发件人邮箱
simpleMailMessage.setCc("34344.3434343@163.com", "zhangruizhe0912@foxmail.com"); // 抄送邮箱
simpleMailMessage.setBcc("1500317030@qq.com"); // 密送邮箱
simpleMailMessage.setSubject("Mail 测试邮箱"); // 邮件主题
simpleMailMessage.setText("这是一封测试邮件 ....."); // 邮件内容
javaMailSender.send(simpleMailMessage);
}
/**
* 测试发送带附件的 HTML 邮件
*/
@Test
public void testSendMail() throws Exception {
MimeMessage mimeMessage = javaMailSender.createMimeMessage();
MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true);
mimeMessageHelper.setFrom("23232323@qq.com"); // 发件人邮箱
mimeMessageHelper.setTo("zhangruizhe0912@foxmail.com"); // 收件人邮箱
mimeMessageHelper.setCc("232322323@163.com"); // 抄送邮箱
mimeMessageHelper.setBcc("1500317030@qq.com"); // 密送邮箱
mimeMessageHelper.setSubject("Mail 测试邮箱"); // 邮件主题
mimeMessageHelper.setText("<h1>这是一封测试邮件 .....</h1>", true); // 邮件内容,设置为 HTML 格式
mimeMessageHelper.addAttachment("1.jpg", new File("C:\\Users\\Administrator\\Pictures\\Camera Roll\\10.jpg")); // 添加附件
mimeMessageHelper.addAttachment("2.pdf", new File("E:\\合同.pdf")); // 添加附件
javaMailSender.send(mimeMessage);
}
}
代码解释
testSendSimpleMail
方法:使用SimpleMailMessage
类发送简单的文本邮件,可以设置发件人、收件人、抄送、密送、主题和内容。testSendMail
方法:使用MimeMessage
和MimeMessageHelper
类发送带附件的 HTML 邮件,可以设置发件人、收件人、抄送、密送、主题、内容和附件。
总结
通过以上步骤,我们可以使用 Java 轻松实现电子邮件的发送功能。需要注意的是,不同邮箱的 SMTP 服务器地址和端口号可能不同,需要根据实际情况进行配置。同时,授权码要妥善保管,避免泄露。希望本文对你有所帮助!
评论