首页 > 其他分享 >SpringBoot发送邮件(一)

SpringBoot发送邮件(一)

时间:2024-05-23 10:29:18浏览次数:20  
标签:content SpringBoot param 发送 String message 邮件 subject

POM依赖

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

邮箱配置

  mail:
    host: smtp.partner.outlook.cn #发送邮件服务器
    username: [email protected] #发送邮件的邮箱地址
    password: 123456 #客户端授权码,不是邮箱密码,
    properties.mail.smtp.port: 587 #端口号25或587
    properties.mail.smtp.starttls.enable: true
    from: [email protected] # 发送邮件的地址,和上面username一致

发送邮件接口

SendMailService

@Mapper
public interface SendMailService {

    /**
     * 发送文本邮件
     * @param to 收件人
     * @param subject 主题
     * @param content 内容
     */
    void sendSimpleMail(String to, String subject, String content);

    /**
     * 发送HTML邮件
     * @param to 收件人
     * @param subject 主题
     * @param content 内容
     */
    public void sendHtmlMail(String to, String subject, String content);



    /**
     * 发送带附件的邮件
     * @param to 收件人
     * @param subject 主题
     * @param content 内容
     * @param filePath 附件
     */
    public void sendAttachmentsMail(String to, String subject, String content, String filePath);
}

SendMailServiceImpl

@Service
@Slf4j
public class SendMailServiceImpl implements SendMailService {


    /**
     * Spring Boot 提供了一个发送邮件的简单抽象,使用的是下面这个接口,这里直接注入即可使用
     */
    @Autowired
    private JavaMailSender mailSender;

    /**
     * 配置文件中我的qq邮箱
     */
    @Value("${spring.mail.from}")
    private String from;

    /**
     * 简单文本邮件
     *
     * @param to      收件人
     * @param subject 主题
     * @param content 内容
     */
    @Override
    public void sendSimpleMail(String to, String subject, String content) {
        //创建SimpleMailMessage对象
        SimpleMailMessage message = new SimpleMailMessage();
        //邮件发送人
        message.setFrom(from);
        //邮件接收人
        message.setTo(to);
        //邮件主题
        message.setSubject(subject);
        //邮件内容
        message.setText(content);
        //发送邮件
        mailSender.send(message);
    }

    /**
     * html邮件
     *
     * @param to      收件人
     * @param subject 主题
     * @param content 内容
     */
    @Override
    public void sendHtmlMail(String to, String subject, String content) {
        //获取MimeMessage对象
        MimeMessage message = mailSender.createMimeMessage();
        MimeMessageHelper messageHelper;
        try {
            messageHelper = new MimeMessageHelper(message, true);
            //邮件发送人
            messageHelper.setFrom(from);
            //邮件接收人
            messageHelper.setTo(to);
            //邮件主题
            message.setSubject(subject);
            //邮件内容,html格式
            messageHelper.setText(content, true);
            //发送
            mailSender.send(message);
            //日志信息
            log.info("邮件已经发送。");
        } catch (MessagingException e) {
            log.error("发送邮件时发生异常!", e);
        }
    }

    /**
     * 带附件的邮件
     *
     * @param to       收件人
     * @param subject  主题
     * @param content  内容
     * @param filePath 附件
     */
    @Override
    public void sendAttachmentsMail(String to, String subject, String content, String filePath) {
        //防止文件名乱码或者不显示文件格式问题
        System.getProperties().setProperty("mail.mime.splitlongparameters", "false");
        MimeMessage message = mailSender.createMimeMessage();
        try {
            MimeMessageHelper helper = new MimeMessageHelper(message, true);
            helper.setFrom(from);
            helper.setTo(to);
            helper.setSubject(subject);
            helper.setText(content, true);
            File file = new File(filePath);
            FileSystemResource fileSystemResource = new FileSystemResource(file);
            helper.addAttachment(filePath, fileSystemResource);
            mailSender.send(message);
            log.info("邮件已经发送。");
            file.delete();
        } catch (MessagingException e) {
            log.error("发送邮件时发生异常!", e);
        }


    }
}

标签:content,SpringBoot,param,发送,String,message,邮件,subject
From: https://www.cnblogs.com/leepandar/p/18207827

相关文章

  • 【SpringBoot】服务停止数据源的关闭时机
    1 前言微服务中我们会用到数据源,数据源中其实就是管理我们的数据库连接,对于数据库而言,连接数是很珍贵的资源,所以释放无用或者长时间空闲的连接显得很重要。那么对于微服务比如我们的SpringBoot当服务启动的时候会初始化数据源,那么停止的时候,是如何关闭数据源,释放连接的呢?这......
  • 在springboot项目中,打包本地的外部jar包,到运行的jar包中
    1、配置依赖<dependency><groupId>com.genesyslab</groupId><artifactId>genesyslab</artifactId><version>1.0.0</version><scope>system</scope><systemPath>${project.basedir}/src/main/re......
  • springboot开启热部署
    一、依赖在SpringBoot中启用热部署通常涉及使用SpringBootDevTools依赖和配置。以下是如何在SpringBoot项目中启用热部署的步骤:在pom.xml中添加SpringBootDevTools依赖:<dependencies><!--其他依赖--><dependency><groupId>org.springframework.b......
  • springboot中执行完某些逻辑后,才算bean加载完,applicationContext才加载完毕
    核心思想实现InitializingBean接口,重写afterPropertiesSet方法范例代码importlombok.extern.slf4j.Slf4j;importorg.springframework.beans.factory.InitializingBean;importorg.springframework.stereotype.Component;@Slf4j@ComponentpublicclassDemoimplementsI......
  • springboot集成logback-spring.xml日志文件
    logback-spring.xml:<!--Logbackconfiguration.Seehttp://logback.qos.ch/manual/index.html--><configurationscan="true"scanPeriod="10seconds"><springPropertyscope="context"name="logLevel"s......
  • Java核心面试知识集—SpringBoot面试题
    概述什么是SpringBoot?SpringBoot是Spring开源组织下的子项目,是Spring组件一站式解决方案,主要是简化了使用Spring的难度,简省了繁重的配置,提供了各种启动器,开发者能快速上手。SpringBoot有哪些优点?SpringBoot主要有如下优点:容易上手,提升开发效率,为Spring开发......
  • 【Springboot】复杂单元测试启动类-只测试OpenFeign
    复杂单元测试启动类-只测试OpenFeign背景随着springboot应用工程规模越来越大,集成了较多的自动配置的程序,例如SpringDataJPA,SpringCloudOpenFeign,ApacheDubbo有时会需要在本地运行测试,但要么因为数据库无法在办公网络环境连接,要么注册中心无法连接,这就导致本地完全无......
  • 使用HttpClient发送请求
    导入依赖<dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.13</version></dependency>相关案例@TextpublicvoidtestGet()throwsException{//创建......
  • springboot 请求前自动给 参数的某个属性赋值
     springboot请求前自动给参数的某个属性赋值在SpringBoot中,可以通过自定义HandlerMethodArgumentResolver来在请求处理方法前自动给参数的某个属性赋值。以下是一个简单的例子:创建一个自定义注解来标记需要自动赋值的参数:  @Target(ElementType.PARA......
  • 【最新】别再发邮件了,必须在开源之夏后台申请,50%的人竟然都没有报名成功!
    引言近期我们注意到很多学生朋友通过邮件向导师申请报名,请注意!!!​这是无效的,请必须通过“开源之夏”官方后台申请报名,请仔细参考这篇【报名攻略】所以,我们特此举办这次宣讲会,目的是向所有感兴趣的学生详细介绍ApacheDolphinScheduler社区在开源之夏中提供的项目,并且解答学生朋友......