个人博客:haichenyi.com。感谢关注
邮件发送是必不可少的,不管是注册邮件,还是广告。
spring boot中已经集成的mail的启动器,所以,我们只用配置好就行了。
引入启动器:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
那么,需要配置什么内容呢?我们之前讲过,需要配置的东西,spring boot都给我们提前准备好了,都在自动配置类AutoConfigure那个类里面,我们可以找一找,里面有个mail包,这个就是邮件的相关配置类。
邮件配置.png我们可以看到上面的prefix中的spring.mail就是我们的配置文件中的前缀,这个类里面的公共变量,就是我们配置文件中的键。我们这里配置了四个值。
#配置邮箱账号
spring.mail.username=371965177@qq.com
spring.mail.password=XXXXXXX
#配置发送邮件服务器
spring.mail.host=smtp.qq.com
#配置ssl安全连接
spring.mail.properties.smtp.ssl.enable = true
这里的密码,我们不能填,我们的QQ号密码吧?需要在你的QQ邮箱去设置。生成授权码即可。直接百度一下:QQ邮箱怎么生成授权码,有教程。然后,把生成的授权码填到这里就行了。配置就这么多
怎么发送邮件呢?也很简单,分两种,一种是简单的文字邮件,一种是复杂带附件的邮件。
package com.haichenyi.springboottask;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.io.File;
@SpringBootTest
class SpringBootTaskApplicationTests {
@Autowired
JavaMailSenderImpl javaMailSender;
@Test
void contextLoads() {
//简单邮件
SimpleMailMessage message = new SimpleMailMessage();
//邮件标题
message.setSubject("测试邮件功能标题");
//邮件内容
message.setText("测试邮件内容");
//发件人,必须要跟配置的相同
message.setFrom("371965177@qq.com");
//收件人
message.setTo("1640200266@qq.com");
javaMailSender.send(message);
}
@Test
public void testMail() throws MessagingException {
//带附件邮件,通过createMimeMessage()方法获取对象
MimeMessage mimeMessage = javaMailSender.createMimeMessage();
//这里带附件的邮件需要用到这个帮助类
MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage,true);
messageHelper.setSubject("测试邮件功能标题");
//可以发送html语句,第一个参数是内容,第二个参数设置为true即可。
messageHelper.setText("<h1 style='color;blue'>测试邮件内容</h1>",true);
//addAttachment添加附件的方法。第一个是名字,第二个是file
messageHelper.addAttachment("1.txt",new File("D:\\Download\\t.txt"));
messageHelper.setFrom("371965177@qq.com");
messageHelper.setTo("1640200266@qq.com");
//这里发送的还是MimeMessage对象,并不是那个帮助类对象
javaMailSender.send(mimeMessage);
}
}
每一行都有注释,已经写的很清楚了,就不做过多的解释了。
网友评论