【Spring Boot】发送邮件功能

一.pom.xml文件添加邮件依赖

		<!-- 发送邮件 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-mail</artifactId>
        </dependency>

二.发送邮件信息

有两种方式配置:固定配置在application.yml中,或者将发送邮箱配成活的参数
注意:发送者必须开通了smtp服务,(4)和(5)目录中介绍开通smtp服务

备注:host配置
网易邮箱:smtp.163.com
QQ邮箱:smtp.qq.com

(1)固定配置在application.yml

在application.yml中配置

spring:
  mail:
    host: smtp.163.com #邮件服务器地址
    port: 465 #端口号
    username: 邮箱地址
    password: 开通smtp服务获取的授权码
    default-encoding: UTF-8 #默认编码格式
    properties:
      mail:
        debug: true #启动debug调试
        smtp:
          auth: true
          ssl:
            enable: true
          starttls:
            enable: true
            required: true

发送邮件接口

@RequiredArgsConstructor
@RestController
public class SendEmailController
{
private final JavaMailSender mailSender;
// 发送邮件接口
public void sendEmail() {
        try {
            SendMail.sendEmail(mailSender, username, dto.getContent(), dto.getFileName(), dto.getReUserMail());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }  
}

(2)发送邮箱配成活

不需要在application.yml中配置信息

public class SendEmailController {

    public void sendEmail() {
        // 邮箱配置
        String host = "smtp.163.com";
        Integer port = 465;
        String username = "邮箱";
        String password = "授权密码";
        String content = "发送内容";
        String fileName = "发送主题";
        String reUserMail = "收件人";
        try {
            SendMail.sendEmail(host, port, username, password, content, fileName, reUserMail);
        } catch (Exception e) {
            e.printStackTrace();

        }
    }
}

(3)底层发送邮件方法

import lombok.extern.slf4j.Slf4j;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;
import javax.mail.internet.*;
import java.util.Properties;


@Slf4j
public class SendMail {

    /**
     *
     * @param host 邮件服务器地址
     * @param port 端口号
     * @param username 发送者邮箱
     * @param password 授权密码
     * @param content 内容
     * @param fileName 主题
     * @param reUserMail 收件人邮箱
     */
    public static void sendEmail(String host, int port, String username, String password, String content, String fileName, String reUserMail){
        JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
        mailSender.setHost(host);
        mailSender.setPort(port);
        mailSender.setUsername(username);
        mailSender.setPassword(password);
        mailSender.setDefaultEncoding("utf-8");

        Properties javaMailProperties = mailSender.getJavaMailProperties();
        javaMailProperties.setProperty("mail.smtp.auth", "true");
        javaMailProperties.setProperty("mail.smtp.ssl.enable", "true");
        javaMailProperties.setProperty("mail.smtp.starttls.enable", "true");
        javaMailProperties.setProperty("mail.smtp.starttls.required", "true");
        javaMailProperties.setProperty("mail.debug", "true");//启用调试
        javaMailProperties.setProperty("mail.smtp.timeout", "3000"); //设置超时时间3秒
        mailSender.setJavaMailProperties(javaMailProperties);
        sendEmail(mailSender, username, content, fileName, reUserMail);
    }


    /**
     * 发送邮件内容
     * @param mailSender
     * @param sender 发送人邮箱
     * @param content 发送内容
     * @param fileName 主题
     * @param reUserMail 收件人邮箱
     */
    public static void sendEmail(JavaMailSender mailSender, String sender, String content, String fileName, String reUserMail) {
        MimeMessage message = null;
        try {
            message = mailSender.createMimeMessage();
            MimeMessageHelper helper = new MimeMessageHelper(message, true);
            /**发送者邮箱,即为开通了smtp服务的邮箱*/
            helper.setFrom(sender);
            /**发送到的邮箱*/
            helper.setTo(reUserMail);
            helper.setSubject("主题:" + fileName);
            helper.setText("带附件的邮件内容");
            helper.setText(content, true);
            
            // 也可传送附件
            String attachmentFilename = "附件名称";
            // 解决附件名称乱码问题
            attachmentFilename = MimeUtility.encodeText(attachmentFilename, "UTF-8", "B");
            File file = new File("文件路径");
            helper.addAttachment(attachmentFilename ,file);
            
            mailSender.send(message);
        } catch (Exception e){
            e.printStackTrace();
        }
    }

}

(4)QQ邮箱开通smtp服务

在邮箱->设置->账号->开通POP3/SMTP服务
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(5)网易邮箱开通smtp服务

邮箱->设置->POP3/SMTP/IMAP->开通POP3/SMTP和IMAP/SMTP服务
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用 Spring Boot邮件发送功能来发送电子邮件。首先,你需要在项目的依赖中添加 Spring Boot 的邮件依赖。在 `pom.xml` 文件中添加以下代码: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency> ``` 接下来,你需要在配置文件中配置邮件相关的属性。在 `application.properties`(或 `application.yml`)文件中添加以下属性: ```properties # 邮件服务器主机名 spring.mail.host=your-mail-host # 邮件服务器端口 spring.mail.port=your-mail-port # 邮件发送者用户名 spring.mail.username=your-username # 邮件发送者密码 spring.mail.password=your-password # 邮件发送者地址 spring.mail.from=your-email-address ``` 现在,你可以在你的代码中使用 `JavaMailSender` 接口来发送邮件。你可以注入 `JavaMailSender` 接口的实例,并使用 `send()` 方法发送邮件。以下是一个简单的示例: ```java import org.springframework.beans.factory.annotation.Autowired; import org.springframework.mail.SimpleMailMessage; import org.springframework.mail.javamail.JavaMailSender; import org.springframework.stereotype.Service; @Service public class EmailService { @Autowired private JavaMailSender javaMailSender; public void sendEmail(String to, String subject, String text) { SimpleMailMessage message = new SimpleMailMessage(); message.setTo(to); message.setSubject(subject); message.setText(text); javaMailSender.send(message); } } ``` 你可以在需要发送邮件的地方调用 `sendEmail()` 方法,并传入收件人地址、邮件主题和邮件内容。 这是使用 Spring Boot 发送邮件的基本步骤。你可以根据自己的需求进行进一步的定制和配置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值