前言
java发邮件小demo
一、获取邮箱授权码?
QQ邮箱:
https://zhuanlan.zhihu.com/p/551399559
二、使用步骤
1.引入库
代码如下(示例):
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
2.新建表、dto
代码如下(示例):
@Data
@TableName("sms_info")
public class SmsInfo {
private String id;
private String to;
private String subject;
private String content;
private Date date;
}
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for sms_info
-- ----------------------------
DROP TABLE IF EXISTS `sms_info`;
CREATE TABLE `sms_info` (
`id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
`content` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`date` datetime NULL DEFAULT NULL,
`subject` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`to` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC;
3.配置yml、核心代码开发
spring:
mail:
default-encoding: UTF-8
host: smtp.qq.com
password: xxx #获取的授权码
username: xxx@qq.com
from: @qq.com # 发送邮件的地址,和上面username一致可以任意
controller
@RestController
@RequestMapping("/sendMail")
@Slf4j
public class SendMailController {
@Autowired
private IMailService mailService;
@PostMapping("/send")
private void send(@RequestBody SmsInfo smsInfo) {
mailService.sendSimpleMail(smsInfo);
}
}
service
public interface IMailService {
void sendSimpleMail(SmsInfo smsInfo);
}
impl
@Service
public class IMailServiceImpl implements IMailService {
private final Logger logger = LoggerFactory.getLogger(this.getClass());
/**
* Spring Boot 提供了一个发送邮件的简单抽象,使用的是下面这个接口,这里直接注入即可使用
*/
@Autowired
private JavaMailSender mailSender;
/**
* 配置文件中我的qq邮箱
*/
@Value("${spring.mail.from}")
private String from;
@Override
public void sendSimpleMail(SmsInfo smsInfo) {
//创建SimpleMailMessage对象
SimpleMailMessage message = new SimpleMailMessage();
//邮件发送人
message.setFrom(from);
//邮件接收人
message.setTo(smsInfo.getTo());
//邮件主题
message.setSubject(smsInfo.getSubject());
//邮件内容
message.setText(smsInfo.getContent());
//发送邮件
mailSender.send(message);
}
}
4.测试
请求地址
localhost:8088/sendMail/send
参数
{
"to": "XXX@qq.com",
"subject": "主题",
"content": "正文内容12345,打开网页版的QQ邮箱,登录邮箱,进入设置-》帐户 然后,在“帐户”设置中,找到服务设置项,进行设置:开启POP3/SMTP服务器,验证密保 用正确的手机好发送正确的验证内容到指定的号码,成功获取授权码 注意:如果之前有设置过授权码 或新版QQ邮箱,则可能在 “管理服务”这里 进入 获取授权码 如果之前获取过,也可点这里 继续获取授权码 "
}
总结
其他邮箱可以自行百度