SpringBoot 依赖之Java Mail Sender邮件发送

Java Mail Sender

  • 依赖名称: Java Mail Sender
  • 功能描述: Send email using Java Mail and Spring Framework’s JavaMailSender.
  • 使用 Java Mail 和 Spring Framework 的 JavaMailSender 发送电子邮件。
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-mail</artifactId>
</dependency>

写在前面,站在巨人的肩膀上才能站的更高,看的更远。重复造轮子的事我们不干。

1. 创建 Spring Boot 项目

  1. 打开 IntelliJ IDEA 并选择 “New Project”
  2. 在左侧的菜单中选择 “Spring Initializr”
  3. 配置项目的基本信息:
    • Group: com.dependencies
    • Artifact: java-mail-sender
    • Name: java-mail-sender
    • Type: Maven
    • Language: Java
    • Packaging: Jar
    • Java Version: 17
  4. 点击 “Next”
  5. “Dependencies” 页面,添加以下依赖:
    • Spring Web - 用于创建 Web 应用程序。
    • Spring Boot Starter Mail - 用于发送电子邮件。
  6. 点击 “Next”,然后点击 “Finish” 来创建项目。

上面的步骤前面几篇文章也有截图可以参考,这里不再赘述。下面是项目创建完成之后的项目架构目录

在这里插入图片描述

2. 配置项目的依赖

IDEA 会自动生成一个 pom.xml 文件并添加你选择的依赖。确保 pom.xml 包含以下依赖:

<properties>
        <java.version>17</java.version>
    </properties>
    <dependencies>
      	<!-- Spring Boot Starter Mail -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-mail</artifactId>
        </dependency>
       <!-- Spring Boot Starter Web -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

3. 配置邮件发送属性

src/main/resources 目录下创建 application.properties 文件,并添加以下配置以设置邮件服务器属性(例如使用 QQmail SMTP 服务器):

#我这边用的是QQ邮箱作为邮件发送服务器
spring.mail.protocol=smtp
spring.mail.host=smtp.qq.com
spring.mail.port=587
spring.mail.username=123456789@qq.com
#QQ邮箱 设置邮件服务会生成临时密码
spring.mail.password=邮件服务器临时密码
spring.mail.test-connection=true
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
spring.mail.properties.mail.smtp.connectiontimeout=5000
spring.mail.properties.mail.smtp.timeout=3000
spring.mail.properties.mail.smtp.writetimeout=5000
# 这个是debug模式,启动过程中会打印出邮箱验证的日志
spring.mail.properties.mail.debug=true

这幅图就是run启动过程中 邮件服务器的自检操作,包括auth login认证结果都会打印,一般在开发环境调试时打开spring.mail.properties.mail.debug=true,生产环境默认关闭 spring.mail.properties.mail.debug=fasle
在这里插入图片描述

4. 创建邮件服务类

创建一个服务类用于发送电子邮件。这个是邮件的核心服务,后期可以扩展邮件内容为文本、附件、定制模板等多种呈现形式的邮件公共服务。

package com.dependencies.javamailsender.service;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.MailException;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.stereotype.Service;

/**
 * @author zhizhou   2024/7/25 16:39
 */
@Service
public class EmailService {
    
    @Autowired
    private JavaMailSender javaMailSender;
    
    public void sendSimpleEmail(String to, String subject, String text) {
        SimpleMailMessage message = new SimpleMailMessage();
      	//这几个参数必填
        message.setTo(to);
        message.setSubject(subject);
        message.setText(text);
        message.setFrom("你的发件邮箱@xx.com");
    
        try {
            javaMailSender.send(message);
        } catch (MailException e) {
            e.printStackTrace();
            //这里捕获一下异常,调试时可以知道具体的错误原因。
        }
    }   
}

5. 创建控制器

创建一个控制器类来触发发送电子邮件的操作,我们先简单实现这个控制器行为,暂时将入参变量固定以值来快速调试。

package com.dependencies.javamailsender.controller;

import com.dependencies.javamailsender.service.EmailService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author zhizhou   2024/7/25 16:40
 */
@RestController
public class EmailController {
    
    @Autowired
    private EmailService emailService;
    
    @GetMapping("/sendEmail")
    public String sendEmail() {
        String to = "收件邮箱@oo.com";
        String subject = "测试邮件";
        String text = "你好,这是测试邮件";
        emailService.sendSimpleEmail(to, subject, text);
        return "邮件发送成功!";
    }
    
}

6. 创建主应用程序类

创建主应用程序类并注解 @SpringBootApplication:补充说一下, IDEA在创建项目的时候这个文件是已经生成好的,一般不需要额外创建。

package com.dependencies.javamailsender;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class JavaMailSenderApplication {
    
    public static void main(String[] args) {
        SpringApplication.run(JavaMailSenderApplication.class, args);
    }
    
}

7. 运行项目

  1. 在 IntelliJ IDEA 中,找到主应用程序类 EmailDemoApplication
  2. 右键点击该类,并选择 “Run ‘EmailDemoApplication’” 来启动项目。

8. 测试发送电子邮件

启动 Spring Boot 应用程序后,打开浏览器并访问以下 URL 来测试发送电子邮件:

http://localhost:8080/sendEmail

在这里插入图片描述

总结

通过以上步骤,我们在 IntelliJ IDEA 中创建了一个 Spring Boot 项目,添加了 Java Mail Sender 依赖,并配置了发送电子邮件的服务。这个示例项目可以帮助你快速上手并实现邮件发送功能。确保在 application.properties 文件中正确配置了邮件服务器属性(例如 QQMail 的 SMTP 服务器),可以根据你的实际需求调整配置。

如果有学习过程中遇到问题,可以留言讨论,看到后,我会第一时间予以回复。

这里实现的基本的文本级别的邮件内容,后期会更新 结合模板引擎Thymeleaf 发送定制模板的邮件内容。

  • 17
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为您提供相应的代码示例,请您参考以下代码: ```java import javax.mail.*; import javax.mail.internet.*; import java.util.*; public class MailService { private final String username = "sender@yourdomain.com"; private final String password = "password"; public void sendTableMail() { Properties props = new Properties(); props.put("mail.smtp.auth", "true"); props.put("mail.smtp.starttls.enable", "true"); props.put("mail.smtp.host", "smtp.gmail.com"); props.put("mail.smtp.port", "587"); Session session = Session.getInstance(props, new javax.mail.Authenticator() { protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(username, password); } }); try { Message message = new MimeMessage(session); message.setFrom(new InternetAddress("sender@yourdomain.com")); message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("receiver@yourdomain.com")); message.setSubject("Table Example"); StringBuilder builder = new StringBuilder(); builder.append("<html><body>"); builder.append("<table border=1><tr><th>Name</th><th>Age</th></tr>"); builder.append("<tr><td>John Doe</td><td>28</td></tr>"); builder.append("<tr><td>Jane Smith</td><td>32</td></tr>"); builder.append("</table></body></html>"); BodyPart messageBodyPart = new MimeBodyPart(); messageBodyPart.setContent(builder.toString(), "text/html"); Multipart multipart = new MimeMultipart(); multipart.addBodyPart(messageBodyPart); message.setContent(multipart); Transport.send(message); System.out.println("Table mail sent successfully!"); } catch (MessagingException e) { throw new RuntimeException(e); } } } ``` 请将 `sender@yourdomain.com` 更改为您自己的发件人邮箱,`password` 更改为您的邮箱密码,`receiver@yourdomain.com` 更改为您的收件人邮箱。 此代码片段可以通过电子邮件发送带有表格形式的HTML消息。 希望对您有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值