springboot2集成mail

2024-07-06 11:09

springboot2集成mail

mail授权开启

以qq邮箱为例

image.png

获取

image.png

点击设置

image.png

跳转页面后,点击账户,将页面往下拖动


image.png


验证成功过后,即可获取授权码

image.png

springboot2集成mail案例

步骤1

创建maven项目

步骤2

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>cn.spring.boot2</groupId>
        <artifactId>springboot2-parent</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <relativePath>../pom.xml</relativePath>
    </parent>
    <artifactId>springboot2-mail</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>springboot2-mail</name>
    <description>springboot2-mail</description>
    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>
    <dependencies>
        <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>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.8</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.8.4</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-mail</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <optional>true</optional>
            <scope>runtime</scope>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <fork>true</fork>
                    <addResources>true</addResources>
                </configuration>
            </plugin>
        </plugins>
        <finalName>springboot-mail</finalName>
    </build>
</project>

步骤3

application.yaml

server:
  port: 8082
spring:
  http:
    encoding:
      charset: utf-8
      enabled: true
  mail:
    default-encoding: UTF-8
    username: jkwy_4@163.com
    password: 'DXTEHDLKPAUFUHKA'
    host: smtp.163.com
    test-connection: false
    properties:
      mail:
        protocol: smtp
        smtp:
          auth: true
          ssl:
            enable: true  

说明

spring:
  mail:
    host: smtp.qq.com #发送邮件的服务器,笔者这里使用的 QQ 邮件
    username: 你的邮箱地址
    password: 授权码,或邮箱密码
    #properties根据各第三邮箱要求配置
    properties.mail.smtp.auth: true
    properties.mail.smtp.starttls.enable: true
    default-encoding: utf-8

image.png

image.png

image.png

步骤3

/**
 * @Descripton:
 * @Version:
 **/
@Configuration
public class MailConfig {
    @Bean
    public MailSenderValidatorAutoConfiguration mailSenderValidatorAutoConfiguration(@Autowired  JavaMailSenderImpl javaMailSender){
        return new MailSenderValidatorAutoConfiguration(javaMailSender);
    }
@Slf4j
@Service
public class SendMailService {
//    @Resource
//    private JavaMailSenderImpl javaMailSenderImpl;
    @Autowired
    private JavaMailSenderImpl mailSender;


//    public void sendSimpleMail() {
//        SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
//        // 设置邮件主题
//        simpleMailMessage.setSubject("账号激活");
//        // 设置要发送的邮件内容
//        simpleMailMessage.setText("hello!");
//        // 要发送的目标邮箱
//        simpleMailMessage.setTo("353340508@qq.com");
//        // 发送者邮箱和配置文件中的邮箱一致
//        simpleMailMessage.setFrom("qq197720042022@163.com");
//        javaMailSenderImpl.send(simpleMailMessage);
//    }
//
//    public void sendMimeMail() {
//        MimeMessage mimeMessage = javaMailSenderImpl.createMimeMessage();
//        try {
//            // 开启文件上传
//            MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true);
//            // 设置文件主题
//            mimeMessageHelper.setSubject("账号激活");
//            // 设置文件内容 第二个参数设置是否支持html
//            mimeMessageHelper.setText("<b style='color:red'>账号激活,请点击我</b>", true);
//            // 设置发送到的邮箱
//            mimeMessageHelper.setTo("353340508@qq.com");
//            // 发送者邮箱和配置文件中的邮箱一致
//            mimeMessageHelper.setFrom("qq197720042022@163.com");
//            // 上传附件
//            // mimeMessageHelper.addAttachment("", new File(""));
//        } catch (MessagingException e) {
//            e.printStackTrace();
//        }
//        javaMailSenderImpl.send(mimeMessage);
//    }


    /**
     * 发送简单文本的邮件
     * @param to
     * @param subject
     * @param content
     * @return
     */
    public boolean send(String to, String subject, String content) {
        log.info("## Ready to send mail ...");

        SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
        // 邮件发送来源
        simpleMailMessage.setFrom(mailSender.getUsername());
        // 邮件发送目标
        simpleMailMessage.setTo(to);
        // 设置标题
        simpleMailMessage.setSubject(subject);
        // 设置内容
        simpleMailMessage.setText(content);

        try {
            // 发送
            mailSender.send(simpleMailMessage);
            log.info("## Send the mail success ...");
        } catch (Exception e) {
            log.error("Send mail error: ", e);
            return false;
        }

        return true;
    }

    /**
     * 发送 html 的邮件
     * @param to
     * @param subject
     * @param html
     * @return
     */
    public boolean sendWithHtml(String to, String subject, String html) {
        log.info("## Ready to send mail ...");
        MimeMessage mimeMessage = mailSender.createMimeMessage();

        MimeMessageHelper mimeMessageHelper = null;
        try {
            mimeMessageHelper = new MimeMessageHelper(mimeMessage, true);
            // 邮件发送来源
            mimeMessageHelper.setFrom(mailSender.getUsername());
            // 邮件发送目标
            mimeMessageHelper.setTo(to);
            // 设置标题
            mimeMessageHelper.setSubject(subject);
            // 设置内容,并设置内容 html 格式为 true
            mimeMessageHelper.setText(html, true);

            mailSender.send(mimeMessage);
            log.info("## Send the mail with html success ...");
        } catch (Exception e) {
            e.printStackTrace();
            log.error("Send html mail error: ", e);
            return false;
        }

        return true;
    }

    /**
     * 发送带有图片的 html 的邮件
     * @param to
     * @param subject
     * @param html
     * @param cids
     * @param filePaths
     * @return
     */
    public boolean sendWithImageHtml(String to, String subject, String html, String[] cids, String[] filePaths) {
        log.info("## Ready to send mail ...");
        MimeMessage mimeMessage = mailSender.createMimeMessage();

        MimeMessageHelper mimeMessageHelper = null;
        try {
            mimeMessageHelper = new MimeMessageHelper(mimeMessage, true);
            // 邮件发送来源
            mimeMessageHelper.setFrom(mailSender.getUsername());
            // 邮件发送目标
            mimeMessageHelper.setTo(to);
            // 设置标题
            mimeMessageHelper.setSubject(subject);
            // 设置内容,并设置内容 html 格式为 true
            mimeMessageHelper.setText(html, true);

            // 设置 html 中内联的图片
            for (int i = 0; i < cids.length; i++) {
                FileSystemResource file = new FileSystemResource(filePaths[i]);
                // addInline() 方法 cid 需要 html 中的 cid (Content ID) 对应,才能设置图片成功,
                // 具体可以参见,下面 4.3.3 单元测试的参数设置
                mimeMessageHelper.addInline(cids[i], file);
            }

            mailSender.send(mimeMessage);
            log.info("## Send the mail with image success ...");
        } catch (Exception e) {
            e.printStackTrace();
            log.error("Send html mail error: ", e);
            return false;
        }
        return true;
    }

    /**
     * 发送带有附件的邮件
     * @param to
     * @param subject
     * @param content
     * @param filePaths
     * @return
     */
    public boolean sendWithWithEnclosure(String to, String subject, String content, String[] filePaths) {
        log.info("## Ready to send mail ...");
        MimeMessage mimeMessage = mailSender.createMimeMessage();

        MimeMessageHelper mimeMessageHelper = null;
        try {
            mimeMessageHelper = new MimeMessageHelper(mimeMessage, true);
            // 邮件发送来源
            mimeMessageHelper.setFrom(mailSender.getUsername());
            // 邮件发送目标
            mimeMessageHelper.setTo(to);
            // 设置标题
            mimeMessageHelper.setSubject(subject);
            // 设置内容
            mimeMessageHelper.setText(content);

            // 添加附件
            for (int i = 0; i < filePaths.length; i++) {
                FileSystemResource file = new FileSystemResource(filePaths[i]);
                String attachementFileName = "附件" + (i + 1);
                mimeMessageHelper.addAttachment(attachementFileName, file);
            }

            mailSender.send(mimeMessage);
            log.info("## Send the mail with enclosure success ...");
        } catch (Exception e) {
            log.error("Send html mail error: ", e);
            return false;
        }
        return true;
    }

}
@SpringBootApplication
public class Springboot2MailApplication {

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

}

步骤5

测试

@SpringBootTest
class Springboot2MailApplicationTests {

    @Autowired
    private SendMailService sendMailService;
    
    @Test
    void contextLoads() {
        System.out.println("=========mail send start==========");
        sendMailService.send("spring1@spring1.cn","测试","邮箱测试接口");
        System.out.println("=========mail send end==========");
    }
}
相关新闻
热点
视频
投票
查看结果
Tags

站点地图 在线访客: 今日访问量: 昨日访问量: 总访问量:

© 2025 个人网站 版权所有

备案号:苏ICP备2024108837号

苏公网安备32011302322151号