springboot 发送邮件

本文介绍如何使用 Spring Boot 发送不同类型的邮件,包括简单邮件、HTML 格式的邮件、带有附件的邮件以及使用模板的邮件。通过具体代码示例展示了如何配置邮件服务并实现这些功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考:https://www.cnblogs.com/ityouknow/p/6823356.html

准备工作:

添加依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-mail</artifactId>
</dependency>

增加配置

在application.properties中进行如下配置:

#发送邮件
spring.mail.host=smtp.qq.com
spring.mail.username=437845310@qq.com
spring.mail.password=保密哦
spring.mail.default-encoding=UTF-8

spring.mail.host是表示邮箱的smtp地址。该地址需要你在你的邮箱设置中打开,设置后会有一个密码,该密码就是spring.mail.password。spring.user.name就是你邮箱的登录名。

一、发送一封最基本的邮件:

建一个service类,直接使用@Compoent直接将该类交给spring容器,直接注入JavaMailSender对象。

@Component
public class MailService {
//发送方的邮箱地址
private static final String from = "437845310@qq.com";
//发送给谁
private static final String to = "abreaking@163.com";
//抄送给谁
private static final String[] copyto = {"437845310@qq.com"};
@Resource
private JavaMailSender javaMailSender;

//发送一封简单的邮件,纯主题+内容
public void sendSimpleMessage(){
    SimpleMailMessage message = new SimpleMailMessage();
    message.setFrom(from);
    message.setTo(to);
    /*message.setCc(copyto);*/
    message.setSubject("放假通知");
    message.setText("年轻人,你的思想很危险");
    javaMailSender.send(message);
}
}

编写测试代码:

@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = SpringbootApplication.class)
public class SpringbootApplicationTests {
    @Resource
    MailService mailService;
    @Test
    public void test01(){
        mailService.sendSimpleMessage();
    }


这时,我们再查看邮件

二、发送一封HTML邮件

其他都不变,直接再MailService中创建方法:

//发送html格式的邮件
public void sendHtmlMessage() {
    MimeMessage mimeMessage = javaMailSender.createMimeMessage();
    String htmlText = "<html><header></header><body><h1 style='color:red'>红色字体内容</h1></body></html>";
    try {
        //true表示需要创建一个multipart message
        MimeMessageHelper helper = new MimeMessageHelper(mimeMessage,true);
        helper.setFrom(from);
        helper.setTo(to);
        helper.setSubject("html邮件");
        helper.setText(htmlText,true);
        javaMailSender.send(mimeMessage);
    } catch (MessagingException e) {
        e.printStackTrace();
    }
}

测试结果为:

三、发送带附件的邮件

其他,不变,编写方法:使用FileSystemResource类实例化需要上传的附件,指定发送过去的附件名

public void sendMessageWithAttachment(){
    MimeMessage mimeMessage = javaMailSender.createMimeMessage();
    try {
        MimeMessageHelper helper = new MimeMessageHelper(mimeMessage,true);
        helper.setFrom(from);
        helper.setTo(to);
        helper.setSubject("带附件的发送");
        helper.setText("内容见附件",true);
        FileSystemResource file = new FileSystemResource(new File("e:\\附件.txt"));
        //添加多个附件可以多次addAttachment
        helper.addAttachment("发送的附件.txt",file);
        javaMailSender.send(mimeMessage);
    } catch (MessagingException e) {
        e.printStackTrace();
    }
}

收到附件:


四、使用邮件模板

举个栗子:我们使用邮箱注册某个网站时,会有一个验证码发到我们的邮箱,如:
    你好!你已经注册到xx网站,验证码为:123456。
(可能内容、格式还会更丰富一些),其实内容都一样,无非就验证码不一样。
所以,我们先创建一个模板页面:(使用thymeleaf,),当然,要先添加依赖

    org.springframework.boot
    spring-boot-starter-thymeleaf

创建一个模板页面:mail.html

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="UTF-8"/>
    <title>Title</title>
</head>
<body>
    此次的验证码为:<strong th:text="${code}">code</strong>。该验证码5分钟有效。
</body>
</html>

创建方法:

@Resource
TemplateEngine templateEngine;
public void sendTemplateMail(){
    Context context = new Context();
    context.setVariable("code","123456");
    String htmlText = templateEngine.process("mail", context);

    //使用发送html的方式发送。如上面

收到邮件如下

Spring Boot发送邮件通常通过JavaMail API实现,Spring Boot提供了一个方便的集成方式,无需额外配置SMTP服务器。以下是使用Spring Boot发送邮件的基本步骤: 1. 添加依赖:在`pom.xml`文件中添加Spring Boot Actuator和JavaMail的相关依赖,例如: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency> ``` 2. 配置邮箱服务:在application.properties或application.yml文件中设置SMTP服务器的信息,如主机名、端口、用户名、密码等: ```properties spring.mail.host=smtp.example.com spring.mail.port=587 spring.mail.username=your-email@example.com spring.mail.password=your-password spring.mail.protocol=smtp spring.mail.properties.mail.smtp.auth=true spring.mail.properties.mail.smtp.starttls.enable=true ``` 3. 创建邮件消息:创建一个Java类,继承`AbstractMessageConverter`或使用`SimpleMailMessage`来构建邮件内容: ```java import org.springframework.mail.SimpleMailMessage; SimpleMailMessage message = new SimpleMailMessage(); message.setTo("recipient@example.com"); message.setFrom("sender@example.com"); message.setSubject("Hello from Spring Boot"); message.setText("This is a test email."); ``` 4. 使用Java配置或注解:在Spring Boot应用中,你可以使用Java配置类配置一个`JavaMailSender`实例,然后在需要的地方发送邮件: ```java import org.springframework.beans.factory.annotation.Autowired; import org.springframework.mail.javamail.JavaMailSender; @Autowired private JavaMailSender javaMailSender; public void sendEmail(SimpleMailMessage message) { javaMailSender.send(message); } ``` 或者使用`@Autowired`自动注入并在方法上使用`@SendMail`注解: ```java @RestController public class EmailController { @Autowired private JavaMailSender javaMailSender; @PostMapping("/send-email") @SendMail public ResponseEntity<String> sendMessage(SimpleMailMessage message) { // ...处理并返回响应 } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值