springboot如何发送邮件呢?

欣喜 SpringBoot 发布时间:2024-01-24 11:32:47 阅读数:17708 1
发送邮件是我们日常开发中,经常使用的功能,那么如何才能发送邮件呢?下文笔者将一一道来,如下所示
1.引入相应的maven依赖
2.编写相应的配置文件
3.调用相应的工具类发送邮件
例:SpringBoot发送邮件(带附件)的示例分享

引入maven

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

yml配置
 
spring:
  mail:
    host: smtp.163.com    #邮件服务器地址,邮箱不一样,服务器地址不一样
    username:  #邮箱用户名 
    password:  #一般使用授权码
    properties:
      'mail.smtp.ssl.enable': 'true'   #设置安全连接
 

邮件发送附件实体类

MailAttachmentDto.java
 
import lombok.Data;
import lombok.experimental.Accessors;


@Data
@Accessors(chain = true)
public class MailAttachmentDto {

    /**
     * 附件文件名
     */
    private String fileName;


    /**
     * 附件路径(绝对路径)
     */
    private String filePath;
}
 
  

邮件发送实体

MailDto.java

import lombok.Data;
import lombok.experimental.Accessors;

import java.util.list;

@Data
@Accessors(chain = true)
public class MailDto {

    /**
     * 主题
     */
    private String subject;

    /**
     * 邮件内容
     */
    private String text;

    /**
     * 收件人邮箱地址(发送给谁)
     */
    private String to;

    /**
     * 发送人(谁发的)
     */
    private String from;

    /**
     * 附件列表
     */
    private List<MailAttachmentDto> attachmentDtoList;
}
 
  

发送邮件工具类

MailUtis.java
 
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;

import javax.annotation.PostConstruct;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.io.File;
import java.util.List;

@Component
public class MailUtil {

    @Autowired
    private JavaMailSenderImpl javaMailSender;

    public static MailUtil mailUtil;

    @PostConstruct
    public void init() {
        mailUtil = this;
        mailUtil.javaMailSender = this.javaMailSender;
    }


    /**
     * 发送邮件(含有附件)
     */
    public static void sendMail(MailDto mailDto) throws MessagingException {
        MimeMessage mimeMessage = mailUtil.javaMailSender.createMimeMessage();
        MimeMessageHelper helper = null;
        helper = new MimeMessageHelper(mimeMessage, true);
        helper.setSubject(mailDto.getSubject());
        helper.setText(mailDto.getText());
        //发送含有html代码的内容
        //helper.setText(mailDto.getText(), true);
        helper.setTo(mailDto.getTo());
        helper.setFrom(mailDto.getFrom());

        if (!CollectionUtils.isEmpty(mailDto.getAttachmentDtoList())) {
            List<MailAttachmentDto> attachmentDtoList = mailDto.getAttachmentDtoList();
            for (MailAttachmentDto attachmentDto : attachmentDtoList) {

                helper.addAttachment(attachmentDto.getFileName(), new File(attachmentDto.getFilePath()));
            }
        }

        mailUtil.javaMailSender.send(mimeMessage);
    }
}
 
 
//发送邮件测试
    /**
     * 发送邮件 测试
     * @return
     */
    @PostMapping(value = "/sendMail")
    public String sendMail(){
        MailDto dto=new MailDto();
        dto.setSubject("测试邮件主题")
                .setText("我是测试邮件具体内容")
                .setTo("admin@java265.com")
                .setFrom("我是发送人");

        List<MailAttachmentDto> attachmentDtoList=new LinkedList<>();
        MailAttachmentDto attachmentDto=new MailAttachmentDto();
        attachmentDto.setFileName("test.jpg")
                .setFilePath("D:\\test.jpg");
        dto.setAttachmentDtoList(attachmentDtoList);
        try {
            MailUtil.sendMail(dto);
            return "success";
        } catch (MessagingException e) {
            e.printStackTrace();
           return "error";
        }

    }
 
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaFramework/SpringBoot/202401/7760.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者