使用邮箱发送邮件
以QQ邮箱为例
第一步
开通qq邮箱的SMTP服务
登录邮箱----->点击设置----->点击账户----->开启SMTP服务
开通的时候,需要按照提示信息短信,短信发送完毕后会给你一个授权码,这个授权码是需要配置在配置文件中,保存好
第二步
引入依赖
<!--邮件-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
第三步
在application.yml中进行配置
# 发送邮件
spring:
mail:
# 配置 SMTP 服务器地址,以为配置的是QQ邮箱,所以下面是smtp.qq.com
host: smtp.qq.com
# 发送者邮箱
username: xxxxxxx@qq.com
# 配置密码,注意不是真正的密码,而是刚刚申请到的授权码
password: xxxxxx
# 端口号465或587
port: 587
# 默认的邮件编码为UTF-8
default-encoding: UTF-8
# 配置SSL 加密工厂
properties:
mail:
smtp:
socketFactoryClass: javax.net.ssl.SSLSocketFactory
#表示开启 DEBUG 模式,这样,邮件发送过程的日志会在控制台打印出来,方便排查错误,生产环境可以关闭
debug: true
第四步
创建发送邮件工具类
import com.lemon.blog.common.exception.BusinessException;
import com.lemon.blog.common.result.ResponseEnum;
import com.lemon.blog.properties.EmailProperties;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Component;
import javax.mail.internet.MimeMessage;
import java.io.File;
//将这个类交给spring管理
@Slf4j
@Component
public class EmailUtil {
@Autowired
private JavaMailSender mailSender; //注入邮件发送组件
public void sendMail(String accepter, String title, String content) {
log.info("开始发送邮件。。。");
try {
//简单邮件 单纯的文字
SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
simpleMailMessage.setTo(accepter);//发送给谁
simpleMailMessage.setSubject(title);//标题
simpleMailMessage.setText(content);//内容
simpleMailMessage.setFrom(XXXXX@qq.com);//由谁发送
mailSender.send(simpleMailMessage);
log.info("邮件发送成功。。。");
//发送复杂邮件 带html样式和附件
/*MimeMessage mimeMessage = mailSender.createMimeMessage();
//参数解析 第一个参数 mimeMessage 是邮件的发送类,第二个参数是是否要上传附件,这里为是
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
helper.setTo("xxxxx@qq.com");//发送给谁
helper.setFrom("xxxx@163.com");//发送者是谁
helper.setSubject("斯嘉丽");//邮件标题
helper.setText("<h1>这是内容</h1><br><font color='red'>这是正文</font>",true);//邮件内容 or 是否是html格式
helper.addAttachment("斯嘉丽",//附件名称 or 附件信息,除了file 也可以是流的形式
new File("C:\\Users\\12485\\Downloads\\Telegram Desktop\\斯嘉丽123.pdf"));
mailSender.send(mimeMessage);
System.out.println("邮件发送成功。。。");*/
} catch (Exception e) {
log.info("邮件发送失败。。。" + e.getMessage());
throw new BusinessException(ResponseEnum.EMAIL_BINDING_ERROR);
}
}
}