spring boot集成邮件发送

1.准备工作

QQ邮箱举个栗子

想要使用Java代码发送邮件,需要在邮箱设置中申请开通 POP3/SMTP 服务

接下来一步一步演示

       1.1 登录网页版的QQ邮箱,点击页面顶部的设置按钮

         1.2 开启POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务,进行短信验证

 发送短信后出现以下页面

 到这里准备工作全部完成,进入Java代码阶段!

2.java 项目实现发送邮件功能

        2.1 pom.xml文件导入发送邮件相关的依赖

<!--邮件发送依赖-->
<dependency>
   	<groupId>org.springframework.boot</groupId>
   	<artifactId>spring-boot-starter-mail</artifactId>
</dependency>

         2.2 application.yml添加邮件配置

spring: 
  # 发送邮件配置
  mail:
    host: smtp.qq.com # 配置 smtp 服务器地址
    port: 587 # smtp 服务器的端口
    username: xxx@qq.com # 配置邮箱用户名(你的邮箱地址)
    password: *********** # 配置申请到的授权码(刚让复制的授权码)
    default-encoding: UTF-8 # 配置邮件编码
    properties:
      mail:
        smtp:
          socketFactoryClass: javax.net.ssl.SSLSocketFactory # 配饰 SSL 加密工厂,此处用于解决项目发布到服务器启动 发送邮件出现错误
    

        2.3 java代码

                Result 返回结果类

package com.example.authority.common;

import com.example.authority.enums.ResponseEnum;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Result {

    private String code;

    private String msg;

    private Object data;

    public static Result success(){
        return new Result(ResponseEnum.SUCCESS.getCode(),ResponseEnum.SUCCESS.getMsg(),null);
    }
    public static Result success(Object data){
        return new Result(ResponseEnum.SUCCESS.getCode(),ResponseEnum.SUCCESS.getMsg(),data);
    }
    public static Result error(String code,String msg){
        return new Result(code,msg,null);
    }
    public static Result error(){
        return new Result(ResponseEnum.ERROR.getCode(),ResponseEnum.ERROR.getMsg(),null);
    }

}

        controller类

package com.example.authority.controller;

import com.example.authority.common.Result;
import com.example.authority.entity.SendEmail;
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.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.servlet.http.HttpServletRequest;

@RestController
@RequestMapping("/sendEmail")
public class SendEmailController {


    @Autowired
    private JavaMailSender mailSender;

    @Value("${spring.mail.username}") // 从application.yml配置文件中获取
    private String from; // 发送发邮箱地址

    /**
     * 发送纯文本邮件
     *
     * @param sendEmail
     * @return
     */
    @PostMapping("/save")
    public Result sendEmail(@RequestBody SendEmail sendEmail, HttpServletRequest request) {
        // 创建一个邮件对象
        SimpleMailMessage msg = new SimpleMailMessage();
        msg.setFrom(from); // 设置发送发
        msg.setTo(sendEmail.getToEmail()); // 设置接收方
        msg.setSubject(sendEmail.getTitle()); // 设置邮件主题
        msg.setText(sendEmail.getContent()); // 设置邮件内容
        // 发送邮件
        mailSender.send(msg);
        return Result.success("发送邮件成功");
    }
}

        2.4 vue代码

<template>
  <div>
    <div style="margin: 10px 0">
      <el-button style="margin-left:10px;margin-bottom:10px;" type="primary" class="el-icon-plus" @click="sendEmail">发邮件</el-button>
    </div>

    <el-dialog title="发送邮件" :visible.sync="dialogFormVisible" width="80%">
      <el-form :model="form" label-width="100px">
        <el-form-item label="标题">
          <el-input v-model="form.title" autocomplete="off" style="width:200px"></el-input>
        </el-form-item>
        <el-form-item label="接受邮箱" label-width="100px">
          <el-input v-model="form.toEmail" autocomplete="off" style="width:200px"></el-input>
        </el-form-item>
        <el-form-item label="文章内容" label-width="100px">
          <el-input ref="md" v-model="form.content" type="textarea" :rows="10"/>
        </el-form-item>
      </el-form>
      <div slot="footer" class="dialog-footer">
        <el-button @click="dialogFormVisible = false">取 消</el-button>
        <el-button type="primary" @click="saveEmail">确 定</el-button>
      </div>
    </el-dialog>

  </div>
</template>

<script>
import axios from "axios";

export default {
  name: "Role",
  data() {
    return {
      form:{},
      dialogFormVisible:false,
    }
  },
  methods: {

    sendEmail(){
      this.dialogFormVisible = true;
      this.form = {}
    },
    saveEmail(){
      this.request.post("/sendEmail/save",this.form).then(res => {
        if(res.code === '200'){
          this.$message.success(res.data);
        }else{
          this.$message.error(res.msg);
        }
      })
    },
  }
}
</script>

<style scoped>
  .headerBg{
    background: #ccc !important;
  }

</style>

            发送邮件

3.收件箱查看


至此,使用spring boot + vue发送邮件的功能就结束了,大家可以根据自己的需求使用,如果觉得有所收获欢迎点赞支持一下,你的支持就是我更新最大的动力。 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值