一、打开必要的邮件设置
首先登录qq邮箱官网登录之后,在设置中将传输协议给打开,我们需要用这个秘钥作为发件人的邮箱授权。
这里开启之后,记住这个秘钥。
二、代码编写
首先我们将作为发送邮件的账户信息写入配置文件。
yml
spring:
mail:
host: smtp.qq.com
username: qq邮箱地址
password: 上面我们拿到的秘钥
port: 465
protocol: smtp
default-encoding: utf-8
properties:
mail:
smtp:
auth: true
starttls:
enable: true
required: true
ssl:
enable: true
socketFactory:
port: 465
class: javax.net.ssl.SSLSocketFactory
我们可以看一下这个官方提供的简易说明:
下面写在项目中。我这里直接在新增数据之后,然后直接调用发邮件的方法,所以无需单独的接口进行触发。
java
@Override
public void afterAdd(QuestionInfo questionInfo) {
if (questionInfo.getWorkPerson() != null) {
questionInfo.setContainWay("描述/责任人/日期\n确认");
questionInfo.setCauseAnalysis("产生原因: \n流出原因: \n验证结果:");
}
SimpleMailMessage mailMessage = new SimpleMailMessage();
String recipientEmail = "这是接收方qq邮件的地址,可以直接从用户资料中进行获取填写。";
mailMessage.setFrom("这个是发送方的邮件地址,直接从配置文件中进行获取");
//这是收件人
mailMessage.setTo(recipientEmail);
mailMessage.setSubject("这是文件的标题");
//这是邮件的正文内容
mailMessage.setText(questionInfo.getDescription());
javaMailSender.send(mailMessage);
DataProxy.super.afterAdd(questionInfo);
}
收件人:
三、遇到的小问题
刚开始的时候,要么报错端口被占用,要么就报错连接被拒绝。然后跟着邮件给的一些格式,调整了一下配置文件内容,然后就可以了。
最后还有一个就是在代码中还需要指定发送方,否则会报错。
java
501 mail from address must be same as authorization user
在代码里面指定一下发送方就行了
java
mailMessage.setFrom("这个是发送方的邮件地址,直接从配置文件中进行获取");