springboot发送email(文本/html格式)邮件

springboot + swagger发送email(文本格式及html格式)邮件

我这里是使用的126邮箱.可以说是126的忠实用户了.06年申请的邮箱.现在一直在使用.感谢网易,感谢126!
在这里插入图片描述

在这里插入图片描述

1.开启服务,获取授权密码

设置==>开启==>选择发送短信验证==>生成授权码
获取邮箱的授权密码

2.目录结构

在这里插入图片描述

config:放置swagger的配置类
controller:程序入口

3.引入pom依赖

<?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>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.0.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.email</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>demo</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

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

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

        <!-- lombok *********************  Begin -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <!-- lombok *********************  End -->

        <!-- swagger *********************  Begin -->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.9.2</version>
        </dependency>

        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.9.2</version>
        </dependency>
        <!-- swagger *********************  End -->

        <!-- email *********************  Begin -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-mail</artifactId>
        </dependency>
        <!-- email *********************  End -->

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

4.配置properties文件

这里配置好发送邮件的参数,他自己注入JavaMailSender实例

server.port=2080

# SMTP服务器
spring.mail.host=smtp.126.com
# 邮箱账号
spring.mail.username=zjylove2006@126.com
# 授权密码,并非邮箱密码
spring.mail.password=刚才生成的授权码
# 邮箱协议类型
spring.mail.protocol=smtp
spring.mail.default-encoding=UTF-8

5.SwaggerConfig

package com.email.demo.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

@Configuration
@EnableSwagger2
public class SwaggerConfig {
    
    

    @Bean
    public Docket createRestApi() {
    
    
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .pathMapping("/")
                .select()
                .apis(RequestHandlerSelectors.any())
                .apis(RequestHandlerSelectors.basePackage("com.email.demo.controller"))
                .build();
    }

    private ApiInfo apiInfo() {
    
    
        return new ApiInfoBuilder()
                .title("springboot利用swagger构建api文档")
                .description("swagger接口文档")
                .version("1.0")
                .build();
    }
}

6.EmailController

package com.email.demo.controller;

import io.swagger.annotations.Api;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.mail.internet.MimeMessage;
import java.text.SimpleDateFormat;
import java.util.Date;

@Api(value = "发送邮件", tags = {
    
    "发送邮件"})
@Slf4j
@Validated
@RestController
@RequestMapping("/email")
public class EmailController {
    
    

    @Autowired
    private JavaMailSender javaMailSender;

    /**
     * 发件人
     */
    @Value("${spring.mail.username}")
    private String from;

    @PostMapping("/send")
    public String send(@RequestBody SimpleMailMessage message){
    
    

        SimpleDateFormat format =  new SimpleDateFormat("yyyy-MM-dd HH:mm");
        String time = format.format(new Date());

        message.setFrom(from);
        javaMailSender.send(message);
        log.info("发送人为:{}, 收件人为:{}, 发送标题为:{}, 发送内容为:{}, 发送时间为:{}",
                from,
                message.getTo(),
                message.getSubject(),
                message.getText(),
                time);

        return "发送成功!!!";
    }

    /**
     * 发送html格式
     * @return
     */
    @PostMapping("/sendHtml")
    public String sendHtml() throws Exception{
    
    

        SimpleDateFormat format =  new SimpleDateFormat("yyyy-MM-dd HH:mm");
        String time = format.format(new Date());

        MimeMessage mimeMessage = javaMailSender.createMimeMessage();
        MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage);
        messageHelper.setSubject("日志");
        messageHelper.setFrom(from);
        messageHelper.setTo("[email protected]");
        messageHelper.setText("<a href=\"https://blog.csdn.net/dayonglove2018/article/details/106784064\">老周的博客</a>", true);
        javaMailSender.send(messageHelper.getMimeMessage());

        log.info("发送人为:{}, 收件人为:{}, 发送标题为:{}, 发送内容为:{}, 发送时间为:{}",
                from, "[email protected]", "日志", messageHelper.getMimeMessage(),
                time);

        return "发送成功!!!";
    }

}

7.测试

1.启动程序,访问swagger界面:

http://localhost:2080/swagger-ui.html#

2.输入测试参数:

{
    
    
  "subject": "日志",
  "text": "springboot + mybatis-plus整合quartz实现定时任务(超详细,附带sql)",
  "to": "[email protected]"
}

3.测试结果

1.测试发送文本邮件

swagger返回结果:
在这里插入图片描述
后台控制台打印结果:
在这里插入图片描述
邮箱也收到邮件了:
在这里插入图片描述
测试OK!!!

2.测试发送html邮件

swagger返回结果:
在这里插入图片描述
控制台返回结果:
在这里插入图片描述
收到的邮件为:
在这里插入图片描述
测试是OK的!!!
欢迎大佬们留言评论,共同学习!!!感谢!!!

===========================
原创文章,转载注明出处!

猜你喜欢

转载自blog.csdn.net/dayonglove2018/article/details/106784064
今日推荐