首页 > 其他分享 >Spring Boot邮件发送教程:步步为营,轻松实现图片附件邮件!

Spring Boot邮件发送教程:步步为营,轻松实现图片附件邮件!

时间:2023-12-29 09:04:54浏览次数:23  
标签:String Spring 图片附件 springframework import org 邮件

 

通过Spring Boot构建一个功能强大的邮件发送应用程序,重点是实现发送包含图片附件的邮件。我将逐步介绍添加必要的依赖、创建邮件服务类和控制器的步骤,并提供了具体的示例源代码。跟随这个简单而清晰的教程,您将能够轻松地集成邮件发送功能到您的Spring Boot应用中。

步骤 1: 添加依赖

确保在pom.xml文件中添加以下依赖,以引入Spring Boot的邮件支持:

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

步骤 2: 创建邮件服务类

创建一个服务类,该类包含了发送带有图片附件的邮件的逻辑。在这个示例中,我们使用JavaMailSender和MimeMessageHelper来构建邮件:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.ByteArrayResource;
import org.springframework.core.io.Resource;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Service;

import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

@Service
public class EmailService {

    @Autowired
    private JavaMailSender javaMailSender;

    public void sendEmailWithAttachment(String to, String subject, String text, String imagePath) throws MessagingException, IOException {
        MimeMessage message = javaMailSender.createMimeMessage();
        MimeMessageHelper helper = new MimeMessageHelper(message, true);

        helper.setTo(to);
        helper.setSubject(subject);
        helper.setText(text, true);

        // 添加图片附件
        helper.addInline("imageAttachment", getImageResource(imagePath));

        javaMailSender.send(message);
    }

    private Resource getImageResource(String imagePath) throws IOException {
        Path path = Paths.get(imagePath);
        byte[] imageBytes = Files.readAllBytes(path);
        return new ByteArrayResource(imageBytes);
    }
}

步骤 3: 创建邮件发送的Controller

创建一个Controller类,用于触发发送带有图片附件的邮件的操作:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.mail.MessagingException;
import java.io.IOException;

@RestController
@RequestMapping("/email")
public class EmailController {

    @Autowired
    private EmailService emailService;

    @GetMapping("/send")
    public String sendEmailWithAttachment() {
        try {
            // 替换为实际的收件人地址、主题、邮件内容和图片路径
            String to = "[email protected]";
            String subject = "邮件主题";
            String text = "邮件正文,包含图片:<img src='cid:imageAttachment'/>"; // 注意使用cid:imageAttachment引用图片附件
            String imagePath = "/path/to/your/image.jpg";

            emailService.sendEmailWithAttachment(to, subject, text, imagePath);

            return "邮件发送成功";
        } catch (MessagingException | IOException e) {
            e.printStackTrace();
            return "邮件发送失败";
        }
    }
}

步骤 4: 运行应用程序

确保Spring Boot应用程序正确配置,并运行该应用程序。通过访问定义的Controller接口,触发发送带有图片附件的邮件的操作。

这个示例中的代码是一个基本的实现,您可能需要根据实际需求进行适当的修改和扩展。确保替换示例中的占位符(如收件人地址、主题、邮件内容和图片路径)为实际的值。

 

标签:String,Spring,图片附件,springframework,import,org,邮件
From: https://www.cnblogs.com/hanbing81868164/p/17933976.html

相关文章

  • 23年底,我出齐了Spring boot,Spring cloud和案例方面的书,正在写一本面试书(代年终总结)
    年末了,再来总结一下吧,希望本人明年的年终总结文还能在博客园发。这次总结的主题是本人出的java书。这几年本人出了不少书,其中有python、redis和Java方面的。姑且不说其它,java方面,本人出了springboot,springcloud(第一代),springcloudalibaba(第二代)和基于springboot+vue.js的全......
  • Spring Boot学习随笔- Jasypt加密数据库用户名和密码以及解密
    学习视频:【编程不良人】2021年SpringBoot最新最全教程第十九章、Jasypt加密Jasypt全称是JavaSimplifiedEncryption,是一个开源项目。Jasypt与SpringBoot集成,以便在应用程序的属性文件中加密敏感信息,然后在应用程序运行时解密这些信息。可以使用jasypt-spring-boot-starter......
  • Spring Validated 校验
    Spring的校验框架是通过@Validated注解和JSR303(BeanValidation)规范实现的。它提供了一种方便的方式来验证方法参数和对象属性的有效性。下面是使用Spring校验框架的几个关键概念和用法:注解@Validated:@Validated注解用于标记需要进行校验的类或方法。它可以放在类级别,在方法参数上......
  • Java Spring Boot Mybatis-Plus 的简单使用
    此文主要基于官网case整理,如需了解更多详情,请移步官网。环境:SpringBoot:3.1.6JDK:17MySQL:5.7数据准备主要是MySQL建库建表,插入一些数据。建库:CREATEDATABASEmybatis_demo;建表:DROPTABLEIFEXISTS`user`;CREATETABLE`user`(idBIGINTNOTNULLCOMME......
  • Spring BeanFactoryAware 解决 prototype 作用域失效问题
    跟着孙哥学Spring,b站:https://www.bilibili.com/video/BV185411477k/?spm_id_from=333.337.search-card.all.click在Spring中,如果一个singletonbean依赖了一个prototypebean,那么这个prototypebean在初始化时只会被创建一次,这就是所谓的"prototypescope失效"的问题......
  • RocketMQ系统性学习-SpringCloud Alibaba集成RocketMQ以及消费收发实战
    欢迎关注公众号:【11来了】发送“资料”可以下载Redis、JVM系列文章PDF版本!作者为在读研究生,目前研二,计划在公众号记录学习常用中间件笔记,以及明年更新面试经历!SpringCloudAlibaba集成RocketMQ最佳实践SpringBoot相对于SSM来说已经很大程度上简化了开发,但是使用SpringBo......
  • Maven插件系列之spring-boot-maven-plugin
    SpringBoot的Maven插件(SpringBootMavenplugin)能够以Maven的方式为应用提供SpringBoot的支持,即为SpringBoot应用提供了执行Maven操作的可能。SpringBootMavenplugin能够将SpringBoot应用打包为可执行的jar或war文件,然后以通常的方式运行SpringBoot应用。SpringBootMave......
  • springcloud动力节点-01Eureka
    SpringCloudEureka1.SpringCloudEureka简介注册发现中心Eureka来源于古希腊词汇,意为“发现了”。在软件领域,Eureka是Netflix在线影片公司开源的一个服务注册与发现的组件,和其他Netflix公司的服务组件(例如负载均衡、熔断器、网关等)一起,被SpringCloud社区整合......
  • springcloud动力节点-05Sleuth
    SpringCloudSleuth1.什么是链路追踪官网:https://spring.io/projects/spring-cloud-sleuth链路追踪就是:追踪微服务的调用路径2.链路追踪的由来在微服务框架中,一个由客户端发起的请求在后端系统中会经过多个不同的服务节点调用来协同产生最后的请求结果,每一个请求都会开成一......
  • springcloud动力节点-04Hystrix
    SpringCloudHystrix1.前言1.1什么是服务雪崩   服务雪崩的本质:线程没有及时回收。不管是调用成功还是失败,只要线程可以及时回收,就可以解决服务雪崩1.2服务雪崩怎么解决1.2.1修改调用的超时时长(不推荐)将服务间的调用超时时长改小,这样就可以让线程及时回收,保证服......