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发送邮件的功能就结束了,大家可以根据自己的需求使用,如果觉得有所收获欢迎点赞支持一下,你的支持就是我更新最大的动力。