文章目录

  • 先申请
  • 在application.properties配置
  • maven依赖
  • 测试
  • 结果
  • 写成service

先申请


会有一个密码需要记住。

在application.properties配置

spring.mail.host=smtp.qq.com
spring.mail.port=587
spring.mail.username=你的邮箱@qq.com
spring.mail.password=申请时后的密码
spring.mail.default-encoding=UTF-8
#spring.mail.properties.mail.smtp.socketFactoryClass=javax.net.ssl.SSLSocketFactory
#spring.mail.properties.mail.debug=true
spring.mail.properties.mail.smtp.quth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true

maven依赖

      <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><scope>test</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId></dependency>

测试

注意,要在正确的包下面。
要和你的Application(拥有@SpringBootApplication注解的这个类)所在的包一样。

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.test.context.junit4.SpringRunner;import java.util.Date;
@RunWith(SpringRunner.class)
@SpringBootTest
public class mailDemo {/****/@Autowiredprivate JavaMailSender javaMailSender;@Testpublic void sendSimpleMail(){SimpleMailMessage message = new SimpleMailMessage();message.setSubject("我是一封邮件");message.setFrom("*****@qq.com");message.setTo("******@qq.com");message.setSentDate(new Date());message.setText("测试测试");javaMailSender.send(message);}
}


结果

写成service

package wkp.myspringdemo.service;public interface IMailService {/*** 发送文本邮件* @param to 收件人* @param subject 主题* @param content 内容*/void sendSimpleMail(String to, String subject, String content);/*** 发送HTML邮件* @param to 收件人* @param subject 主题* @param content 内容*/public void sendHtmlMail(String to, String subject, String content);/*** 发送带附件的邮件* @param to 收件人* @param subject 主题* @param content 内容* @param filePath 附件*/public void sendAttachmentsMail(String to, String subject, String content, String filePath);
}
package wkp.myspringdemo.service;import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.FileSystemResource;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Service;
import wkp.myspringdemo.service.IMailService;import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.io.File;@Service
public class IMailServiceImpl implements IMailService {private final Logger logger = LoggerFactory.getLogger(this.getClass());/*** Spring Boot 提供了一个发送邮件的简单抽象,使用的是下面这个接口,这里直接注入即可使用*/@Autowiredprivate JavaMailSender mailSender;/*** 配置文件中我的qq邮箱*/@Value("${spring.mail.from}")private String from;/*** 简单文本邮件* @param to 收件人* @param subject 主题* @param content 内容*/@Overridepublic void sendSimpleMail(String to, String subject, String content) {//创建SimpleMailMessage对象SimpleMailMessage message = new SimpleMailMessage();//邮件发送人message.setFrom(from);//邮件接收人message.setTo(to);//邮件主题message.setSubject(subject);//邮件内容message.setText(content);//发送邮件mailSender.send(message);}/*** html邮件* @param to 收件人* @param subject 主题* @param content 内容*/@Overridepublic void sendHtmlMail(String to, String subject, String content) {//获取MimeMessage对象MimeMessage message = mailSender.createMimeMessage();MimeMessageHelper messageHelper;try {messageHelper = new MimeMessageHelper(message, true);//邮件发送人messageHelper.setFrom(from);//邮件接收人messageHelper.setTo(subject);//邮件主题message.setSubject(subject);//邮件内容,html格式messageHelper.setText(content, true);//发送mailSender.send(message);//日志信息logger.info("邮件已经发送。");} catch (MessagingException e) {logger.error("发送邮件时发生异常!", e);}}/*** 带附件的邮件* @param to 收件人* @param subject 主题* @param content 内容* @param filePath 附件*/@Overridepublic void sendAttachmentsMail(String to, String subject, String content, String filePath) {MimeMessage message = mailSender.createMimeMessage();try {MimeMessageHelper helper = new MimeMessageHelper(message, true);helper.setFrom(from);helper.setTo(to);helper.setSubject(subject);helper.setText(content, true);FileSystemResource file = new FileSystemResource(new File(filePath));String fileName = filePath.substring(filePath.lastIndexOf(File.separator));helper.addAttachment(fileName, file);mailSender.send(message);//日志信息logger.info("邮件已经发送。");} catch (MessagingException e) {logger.error("发送邮件时发生异常!", e);}}
}

spring boot +QQmail相关推荐

  1. spring boot项目 中止运行 最常用的几种方法

    spring boot项目 中止运行 最常用的几种方法: 1. 调用接口,停止应用上下文 @RestController public class ShutdownController impleme ...

  2. html+spring boot简单的ajax数据传输实现

    本篇讲解在前后端不分离情况下的html+spring boot的项目数据传输实现 首先,后台我写了三个接口 package com.demo.ajax.controller;import com.de ...

  3. Spring Boot整合Spring Data JPA操作数据

    一. Sping Data JPA 简介 Spring Data JPA 是 Spring 基于 ORM 框架.JPA 规范的基础上封装的一套 JPA 应用框架,底层使用了 Hibernate 的 J ...

  4. SpringBoot (八) :Spring Boot多数据源(JdbcTemplate)配置与使用

    什么是JdbcTemplate 为了使 JDBC 更加易于使用,Spring 在 JDBCAPI 上定义了一个抽象层, 以此建立一个JDBC存取框架. 作为 SpringJDBC 框架的核心, JDB ...

  5. 使用最新版(2020)IntelliJ IDEA 新建 Spring Boot 2.0 项目

    使用最新版(2020)IntelliJ IDEA 新建 Spring Boot 2.0 项目 一:创建项目,并添加相应依赖 新建Project,并指定Project为Spring Initializr ...

  6. 狂神Spring Boot 员工管理系统 超详细完整实现教程(小白轻松上手~)

    [SpringBoot-web系列]前文: SpringBoot-web开发(一): 静态资源的导入(源码分析) SpringBoot-web开发(二): 页面和图标定制(源码分析) SpringBo ...

  7. [JAVA EE]Spring Boot 控制层:参数传递方法

    项目需要参照本人java ee系列前文建立,请读者自行前往本人主页查看. 当然,您自己创建一个项目也是可以的. bean包下的Student.java package com.example.demo ...

  8. spring boot中的日志入门

    日志通常不会在需求阶段作为一个功能单独提出来,也不会在产品方案中看到它的细节.但是,这丝毫不影响它在任何一个系统中的重要地位. 报警系统与日志系统的关系 为了保证服务的高可用,发现问题一定要及时,定位 ...

  9. spring boot整合spring security笔记

    最近自己做了一个小项目,正在进行springboot和spring Security的整合,有一丢丢的感悟,在这里分享一下: 首先,spring boot整合spring security最好是使用T ...

最新文章

  1. maven_Maven排除所有传递依赖项
  2. Windows内核符号表学习总结
  3. Redhat 6.4_联网 yum 配置
  4. 知乎上 40 个有趣回复,很精辟!
  5. Bootstrap响应式工具类
  6. Sharding-Jdbc实现读写分离、分库分表,妙!
  7. 帆软报表数据库配置及关系
  8. JAVA调试出现不断在ClassLoader类中执行时的问题?
  9. 量子纠缠,如何理解不确定性
  10. excel导出 服务器运行失败,SolidWorks 插入自制EXCEL明细表 启动服务器应用程序失败:启动excle服务器失败...
  11. AllenNLP—笔记—json
  12. CSSJS--用JS让文字闪烁起来
  13. 伊利诺伊大学厄本那 香槟分校计算机科学,伊利诺伊大学厄本那-香槟分校计算机科学面试经验汇总...
  14. 基金大数据分析及基金投资建议(Python与Excel实现)
  15. mysql pt 慢日志_MySQL优化之慢日志分析(Anemometer+Pt-query-digest)
  16. 【每天1分钟】MarkDown语法学习之插入表格
  17. 集成HMS Scan Kit扫码SDK,轻松实现手机扫码选购
  18. 车载VPA形象发展史:谁是第一个吃螃蟹的人?
  19. Python股票监控机器人,加强版!
  20. 大学生访谈计算机教师,职业生涯人物访谈报告,教师(共10篇)

热门文章

  1. 视频程式化的基于帧差异的时间损失
  2. 栈与队列1——设计getMin功能的栈
  3. IT运维人员追女友必备神器之运维开发实战程序案例
  4. Sweeter Than Fiction - Taylor Swift
  5. 网络工程师应掌握的50个路由器知识要点
  6. java basedaoimpl_java web项目DAO层通用接口BaseDao与实现类BaseDaoImpl
  7. java获取get请求返回_Java中处理调用第三方接口(post/get),该如何处理,返回的数据如何处理...
  8. 3 个可以使你的 Python 代码更优雅、可读、直观和易于维护的工具
  9. 笔记本桌面计算机打开不了怎么办,笔记本电脑开不了机怎么办?
  10. linux g 手动安装,linux上oracle11g 手动安装