【一文轻松搞懂Java自动发送邮件的功能】

第一步:新建项目

项目结构:
【一文轻松搞懂Java自动发送邮件的功能】_第1张图片

第二步:申请邮箱的授权码

【一文轻松搞懂Java自动发送邮件的功能】_第2张图片

第三步:完成配置文件和maven依赖

properties.yml

server:
  port: 8089
spring:
  mail:
  	#qq和163都可以
    host: smtp.qq.com 
    protocol: smtp
    default-encoding: UTF-8
    password: 你的授权码
    username: 你的邮箱
    port: 465
    properties.mail.smtp.ssl.enable: true
  servlet:
    multipart:
      max-file-size: 10MB
      max-request-size: 50MB

pom.xml

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

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

<!--模版引擎-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

第四步:完成controller

具体步骤和每一步都是什么意思,代码注释的很清楚,我相信小学生也可以看懂

MailController.java

package com.example.mail.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.FileSystemResource;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.thymeleaf.TemplateEngine;
import org.thymeleaf.context.Context;

import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.io.File;
import java.util.Date;

/**
 * 发送邮件的几种情况
 *  1:直接文本发送、
 *  2:内容是html格式
 *  3:带有附件的形式
 */

@RestController
public class MailController {


    //java邮件服务接口:全局的老大哥
    @Autowired
    private JavaMailSender javaMailSender;

    // 发送html格式邮件时需要用到模板渲染引擎
    @Autowired
    private TemplateEngine templateEngine;

    /**
     * 普通邮件发送
     * @return
     */
    @RequestMapping("/send")
    public String  send(){
        //创建一个简单的邮件
        SimpleMailMessage mailMessage = new SimpleMailMessage();
        // 给邮件实体添加一些信息(谁发的?发给谁?内容是什么?)
        // 谁发的?
        mailMessage.setFrom("[email protected]");
        // 发给谁?setTo里面可以写多个用户
        // mailMessage.setTo("[email protected]","[email protected]");
        mailMessage.setTo("[email protected]");
        // 发送时间
        mailMessage.setSentDate(new Date());
        // 邮件主题
        mailMessage.setSubject("测试邮件");
        // 邮件内容
        mailMessage.setText("欢迎加入字节跳动大家庭!!");
        // 发送邮件
        javaMailSender.send(mailMessage);

        return  "邮件发送成功!";

    }

    /**
     * 使用html发送
     * @return
     */
    @RequestMapping("/sendHtml")
    public String sendHtml() throws MessagingException {
        //此时的邮件类型就不是普通的SimpleMailMessage
        //需要使用老大哥javaMailSender去创建
        //MimeMessage是互联网类型的邮件
        MimeMessage mimeMessage = javaMailSender.createMimeMessage();
        //因为不是普通邮件,所以需要一个helper去帮助它添加内容
        MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage,true);
        //同样的道理可以给邮件添加内容
        // 谁发的
        mimeMessageHelper.setFrom("[email protected]");
        // 发给谁?setTo里面可以写多个用户
        // mailMessage.setTo("[email protected]","[email protected]");
        mimeMessageHelper.setTo("[email protected]");
        // 邮件主题
        mimeMessageHelper.setSubject("测试邮件");
        // 发送时间
        mimeMessageHelper.setSentDate(new Date());
        // 邮件内容
        //这里mimeMessageHelper的setText方法可以传两个参数:内容和是否是html类型
        // mimeMessageHelper.setText(content,true);
        //而上面简单邮件SimpleMailMessage只能有一个参数
        // mailMessage.setText(content);
        /*
         * 这里注意:我们如果需要往main.html文件中传值:就需要使用thymeleaf中的Context方法
         * 往mail.html中赋值
         * 例如:本项目中的mail.html文件中需要name和result两个参数值
         * 就要使用context.setVariable()
         */
        //赋值
        Context context = new Context();
        // 姓名
        context.setVariable("name","发光的白鹤芋");
        // 结果
        context.setVariable("result","拟录取");
        // 使用模板引擎处理html文件得到字符串类型的content
        String content = templateEngine.process("mail",context);
        // 记得开启html为true
        mimeMessageHelper.setText(content,true);
        // 最后需要老大哥来发送
        javaMailSender.send(mimeMessage);

        return  "使用html的邮件发送成功!!";

    }

    /**
     * 使用html发送,并带有附件
     * @return
     */
    @RequestMapping("/sendHtmlAndAttachment")
    public String sendHtmlAndAttachment() throws MessagingException {
        //此时的邮件类型就不是普通的SimpleMailMessage
        //需要使用老大哥javaMailSender去创建
        //MimeMessage是互联网类型的邮件
        MimeMessage mimeMessage = javaMailSender.createMimeMessage();
        //因为不是普通邮件,所以需要一个helper去帮助它添加内容
        MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage,true);
        //同样的道理可以给邮件添加内容
        // 谁发的
        mimeMessageHelper.setFrom("[email protected]");
        // 发给谁
        mimeMessageHelper.setTo("[email protected]");
        // 邮件主题
        mimeMessageHelper.setSubject("测试邮件");
        // 发送时间
        mimeMessageHelper.setSentDate(new Date());
        // 邮件内容
        //这里mimeMessageHelper的setText方法可以传两个参数:内容和是否是html类型
        // mimeMessageHelper.setText(content,true);
        //而上面简单邮件SimpleMailMessage只能有一个参数
        // mailMessage.setText(content);
        /*
         * 这里注意:我们如果需要往main.html文件中传值:就需要使用thymeleaf中的Context方法
         * 往mail.html中赋值
         * 例如:本项目中的mail.html文件中需要name和result两个参数值
         * 就要使用context.setVariable()
         */
        //赋值
        Context context = new Context();
        // 姓名
        context.setVariable("name","发光的白鹤芋");
        // 结果
        context.setVariable("result","拟录取");
        // 使用模板引擎处理html文件得到字符串类型的content
        String content = templateEngine.process("mail",context);
        // 记得开启html为true
        mimeMessageHelper.setText(content,true);
        // 添加附件
        // 使用addAttachment,并带有两个参数
        // mimeMessageHelper.addAttachment(文件名,文件资源);
        // 处理文件
        FileSystemResource  fileSystemResource = new FileSystemResource(new File("C:\\Users\\WuChu\\Desktop\\test.jpeg"));
        String filename = fileSystemResource.getFilename();
        // 得到两个参数之后, 添加文件(可以添加多个附件,调用几次addAttachment就行)
        mimeMessageHelper.addAttachment(filename,fileSystemResource);
        mimeMessageHelper.addAttachment(filename,fileSystemResource);
        // 最后需要老大哥来发送
        javaMailSender.send(mimeMessage);

        return  "使用html并带有附件的邮件发送成功!!";

    }



}

第五步:结果展示

1、浏览器输入:http://localhost:8089/send
【一文轻松搞懂Java自动发送邮件的功能】_第3张图片> 【一文轻松搞懂Java自动发送邮件的功能】_第4张图片

2、浏览器输入:http://localhost:8089/sendHtml

【一文轻松搞懂Java自动发送邮件的功能】_第5张图片
【一文轻松搞懂Java自动发送邮件的功能】_第6张图片

3、浏览器输入:http://localhost:8089/sendHtmlAndAttachment 【一文轻松搞懂Java自动发送邮件的功能】_第7张图片
【一文轻松搞懂Java自动发送邮件的功能】_第8张图片

你可能感兴趣的:(#,java,后端,java,spring,servlet)