1.开发环境
idea 2023.1
maven 3.8以上
java8
MYSQL 8.0
2.搭建ssmp框架
2.1创建基本项目
2.2需要的导入依赖
<dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <!-- 1.日志 --> <!-- 实现slf4j接口并整合 --> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.1.1</version> </dependency> <!-- 2.数据库 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.25</version> <scope>runtime</scope> </dependency> <!-- <dependency>--> <!-- <groupId>c3p0</groupId>--> <!-- <artifactId>c3p0</artifactId>--> <!-- <version>0.9.1.2</version>--> <!-- </dependency>--> <dependency> <groupId>com.mchange</groupId> <artifactId>c3p0</artifactId> <version>0.9.5.2</version> </dependency> <!-- DAO: MyBatis --> <!-- <dependency>--> <!-- <groupId>org.mybatis</groupId>--> <!-- <artifactId>mybatis</artifactId>--> <!-- <version>3.5.6</version>--> <!-- </dependency>--> <!-- <dependency>--> <!-- <groupId>org.mybatis</groupId>--> <!-- <artifactId>mybatis-spring</artifactId>--> <!-- <version>1.2.3</version>--> <!-- </dependency>--> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus</artifactId> <version>2.3</version> </dependency> <!-- 3.Servlet web --> <dependency> <groupId>taglibs</groupId> <artifactId>standard</artifactId> <version>1.1.2</version> </dependency> <dependency> <groupId>jstl</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.5.4</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>test</scope> </dependency> <!-- 4.Spring --> <!-- 1)Spring核心 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>4.1.7.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>4.1.7.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.1.7.RELEASE</version> </dependency> <!-- 2)Spring DAO层 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>4.1.7.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>4.1.7.RELEASE</version> </dependency> <!-- 3)Spring web --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>4.1.7.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>4.1.7.RELEASE</version> </dependency> <!-- 4)Spring test --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>4.1.7.RELEASE</version> </dependency> <!-- redis客户端:Jedis --> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.7.3</version> </dependency> <dependency> <groupId>com.dyuproject.protostuff</groupId> <artifactId>protostuff-core</artifactId> <version>1.0.8</version> </dependency> <dependency> <groupId>com.dyuproject.protostuff</groupId> <artifactId>protostuff-runtime</artifactId> <version>1.0.8</version> </dependency> <!-- Map工具类 --> <dependency> <groupId>commons-collections</groupId> <artifactId>commons-collections</artifactId> <version>3.2</version> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>RELEASE</version> <scope>compile</scope> </dependency> <!-- 邮件发送 --> <dependency> <groupId>com.sun.mail</groupId> <artifactId>javax.mail</artifactId> <version>1.6.1</version> </dependency> <!-- https://mvnrepository.com/artifact/org.springframework/spring-context-support --> <!-- https://mvnrepository.com/artifact/org.springframework/spring-context-support --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>4.3.30.RELEASE</version> </dependency> <!--spring quartz依赖--> <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>2.3.0</version> </dependency> <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz-jobs</artifactId> <version>2.3.0</version> </dependency> </dependencies>
导入tomcat插件 放在</build>里面
<!-- 配置Tomcat插件 -->
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<port>8080</port>
<path>/</path>
<uriEncoding>UTF-8</uriEncoding>
</configuration>
</plugin>
2.3新建目录 文件夹 如下
2.4创建xml文件
2.4.1 创建spring.xm文件 放入resoures 的spring 目录下
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<!-- 配置整合mybatis过程 -->
<!-- 1.配置数据库相关参数properties的属性:${url} -->
<context:property-placeholder location="classpath:jdbc.properties" />
<!-- 2.数据库连接池 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<!-- 配置连接池属性 -->
<property name="driverClass" value="${jdbc.driver}" />
<property name="jdbcUrl" value="${jdbc.url}" />
<property name="user" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
<!-- c3p0连接池的私有属性 -->
<property name="maxPoolSize" value="30" />
<property name="minPoolSize" value="10" />
<!-- 关闭连接后不自动commit -->
<property name="autoCommitOnClose" value="false" />
<!-- 获取连接超时时间 -->
<property name="checkoutTimeout" value="10000" />
<!-- 当获取连接失败重试次数 -->
<property name="acquireRetryAttempts" value="2" />
</bean>
<!-- 3.配置SqlSessionFactory对象 -->
<bean id="sqlSessionFactory" class="com.baomidou.mybatisplus.spring.MybatisSqlSessionFactoryBean">
<!-- 注入数据库连接池 -->
<property name="dataSource" ref="dataSource"/>
<!-- 配置MyBaties全局配置文件:mybatis-config.xml -->
<property name="configLocation" value="classpath:mybatis-config.xml" />
<!-- 扫描entity包 使用别名 -->
<property name="typeAliasesPackage" value="com.reversocontext.entity" />
<!-- <!– 扫描sql配置文件:mapper需要的xml文件 –>-->
<property name="mapperLocations" value="classpath:mapper/*.xml" />
</bean>
<!-- 4.配置扫描Dao接口包,动态实现Dao接口,注入到spring容器中 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!-- 注入sqlSessionFactory -->
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
<!-- 给出需要扫描Dao接口包 需要修改你对应的 -->
<property name="basePackage" value="com.reversocontext.dao" />
</bean>
<!--5.配置邮箱 -->
<context:property-placeholder location="classpath:mail.properties"/>
<!--配置邮件接口-->
<bean id="javaMailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="host" value="smtp.qq.com"/>
<property name="username" value="邮箱"/>
<property name="password" value="密码"/>
<property name="defaultEncoding" value="utf-8"/>
<property name="javaMailProperties">
<props>
<prop key="mail.smtp.auth">true</prop>
<prop key="mail.smtp.timeout">20000</prop>
</props>
</property>
</bean>
<!--扫描java 里面的目录 需要修改com.reversocontext 对应你自己的-->
<context:component-scan base-package="com.reversocontext" use-default-filters="false">
<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller" />
</context:component-scan>
</beans>
2.4.2准备jdbc.properties 文件 mail.properties可以自己设置出来 我螯合进去了
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/world?useSSL=true&characterEncoding=utf-8&serverTimezone=GMT
jdbc.username=root
jdbc.password=1234
2.4.3 mail.properties 的配置文件
mail.smtp.host=smtp.qq.com
mail.smtp.username=账号
mail.smtp.password=密码
mail.smtp.defaultEncoding=utf-8
mail.smtp.auth=true
mail.smtp.timeout=20000
2.4.4 创建 spring-serivce.xml 用来控制事务 需要修改 serive 的目录
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd">
<!-- 扫描service包下所有使用注解的类型 -->
<context:component-scan base-package="com.reversocontext.service" />
<!-- 配置事务管理器 -->
<!-- 定义事务管理器 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<!-- 配置基于注解的声明式事务 -->
<tx:annotation-driven transaction-manager="transactionManager" />
</beans>
2.4.5 创建 spring.web.xml 需要修改你自己的目录
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">
<!-- 配置SpringMVC -->
<!-- 1.开启SpringMVC注解模式 -->
<!-- 简化配置:
(1)自动注册DefaultAnootationHandlerMapping,AnotationMethodHandlerAdapter
(2)提供一些列:数据绑定,数字和日期的format @NumberFormat, @DateTimeFormat, xml,json默认读写支持
-->
<mvc:annotation-driven />
<!-- 2.静态资源默认servlet配置
(1)加入对静态资源的处理:js,gif,png
(2)允许使用"/"做整体映射
-->
<mvc:default-servlet-handler/>
<!-- 3.配置jsp 显示ViewResolver -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
</bean>
<!-- 4.扫描web相关的bean -->
<context:component-scan base-package="com.reversocontext.web" />
</beans>
2.4.5创建 mybaits-config.xml 文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 配置全局属性 -->
<settings>
<!-- 使用jdbc的getGeneratedKeys获取数据库自增主键值 -->
<setting name="useGeneratedKeys" value="true" />
<!-- 使用列别名替换列名 默认:true -->
<setting name="useColumnLabel" value="true" />
<!-- 开启驼峰命名转换:Table{create_time} -> Entity{createTime} -->
<setting name="mapUnderscoreToCamelCase" value="true" />
</settings>
</configuration>
2.4.6创建 web.xml 目录 放在 webapp里面
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<!--加入spring核心配置文件-->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring/*.xml</param-value>
</context-param>
<!--监听器-->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!--配置前端控制器DispatcherServlet-->
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring/spring.web.xml</param-value>
</init-param>
<!--启动顺序,值越小越优先-->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<!--注意:这里只有两种你写法:1、【/】2、【/.do】
不能是.*
-->
<url-pattern>/</url-pattern>
</servlet-mapping>
<!--设置字符集过滤器-->
<filter>
<filter-name>characterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
<init-param>
<param-name>forceRequestEncoding</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>forceResponseEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>characterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
2.4.6 创建 log.xml 记录日志 放在resoreues 目录
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="true">
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<!-- encoders are by default assigned the type ch.qos.logback.classic.encoder.PatternLayoutEncoder -->
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<root level="debug">
<appender-ref ref="STDOUT" />
</root>
</configuration>
2.4.7创建 mybaits-config.xml 修改mp的配置 不写分页的配置自百度
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 配置全局属性 -->
<settings>
<!-- 使用jdbc的getGeneratedKeys获取数据库自增主键值 -->
<setting name="useGeneratedKeys" value="true" />
<!-- 使用列别名替换列名 默认:true -->
<setting name="useColumnLabel" value="true" />
<!-- 开启驼峰命名转换:Table{create_time} -> Entity{createTime} -->
<setting name="mapUnderscoreToCamelCase" value="true" />
</settings>
</configuration>
2.4.8ssmp项目搭建完成
2.5准备定时任务
2.5.1 创建定时任务 spring.task.xml 文件 需要修改 定时任务的类和你的方法
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.2.xsd
">
<!-- ======================== 调度工厂 ======================== -->
<bean id="quartzFactoryBean"
class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="CronTriggerBean"/>
</list>
</property>
</bean>
<!-- ======================== 调度触发器 ======================== -->
<bean id="CronTriggerBean" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail" ref="SpringQtzJobMethod"/>
<!--每一个小时点执行一次:0 0 18 * * ?-->
<property name="cronExpression" value="* * 0/1 * * ? "/>
</bean>
<!-- ======================== 调度任务 ======================== -->
<!-- 定义目标bean和bean中的方法 修改自己的执行调度任务的类 -->
<bean id="SpringQtzJob" class="com.reversocontext.task.SendMailTask"/>
<!-- 使用MethodInvokingJobDetailFactoryBean,任务类可以不实现Job接口,通过targetMethod指定调用方法 -->
<bean id="SpringQtzJobMethod"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<!--定时任务的方法类-->
<property name="targetObject" ref="SpringQtzJob"/>
<!--定时任务方法的名称-->
<property name="targetMethod" value="sendEntryMail"/>
<!-- 不允许并发 需等待上次执行结束-->
<!-- <property name="concurrent" value="false"/>-->
</bean>
</beans>
2.5.2 创建utils 目录 创建 邮件配置类 和方法 方法为硬编码 建议改善
package com.reversocontext.task;
import com.reversocontext.dao.BumentableMapper;
import com.reversocontext.dao.RoleMapper;
import com.reversocontext.dao.UsersMapper;
import com.reversocontext.entity.Bumentable;
import com.reversocontext.entity.Role;
import com.reversocontext.entity.Users;
import com.reversocontext.service.UsersService;
import com.reversocontext.utils.SendMailUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import javax.annotation.Resource;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import javax.annotation.Resource;
import javax.annotation.Resources;
import javax.mail.internet.MimeMessage;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
/**
* @author 定时任务
* @ClassName SendMailTask
* @Description 入职和今天过生日
*/
@Component
public class SendMailTask {
@Resource
private JavaMailSender javaMailSender;///在spring中配置的邮件发送的bean
private final String FROM = "zjw_2301211@126.com";
private final String FROM_PWD = "z123123";
@Autowired
private UsersService userService;
@Autowired
private UsersMapper usersMapper;
@Autowired
private RoleMapper roleMapper;
@Autowired
private BumentableMapper bumentableMapper;
public void sendBirthdayMail() throws Exception {
//1. 调用service获取今日过生日的用户
// Set<User> userList = userService.findTodayPassBirthdayUser();
// //2. 判断是否有内容
// if(userList != null && userList.size() > 0){
// // 有过生日的用户.
// for (User user : userList) {
// String subject = "生日快乐!";
// String content = "<h1 style='color:red;'>祝" + user.getUsername() + "生日快乐!!!!!</h1>";
// sendMailUtil.sendMail(FROM,user.getEmail(),FROM_PWD,subject,content);
// }
// }
}
//员工入职发送邮件 每一个小时执行一次 需要修改 表达式 代码为硬编码 !!!!(员工入职判断入职时间)
public void sendEntryMail() throws Exception {
MimeMessage mMessage = javaMailSender.createMimeMessage();//创建邮件对象
MimeMessageHelper mMessageHelper;
//查询用户的全部数据集
List<Users> users = userService.selectList(null);
//系统时间比较入职时间
Date dNow = new Date();
SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd");
System.out.println(ft.format(dNow));
//密送员工的领导(数据逻辑自己写,不知道自己看表)
//遍历集合 筛选入职的用户(以当天日期为主) 判断条件 需要用户提供
for (Users user : users) {
//获取员工所在部门
// Bumentable bumentable = bumentableMapper.selectById(user.getBumentable());
//查询用户部门所在的领导
if (ft.format(user.getEntrydate()).equals(ft.format(new Date()))) {
//反馈给用户
String subject = "入职成功了!";//接受的邮件主题
String content = "<h1 style='color:red;'>入职快了!!!!!</h1>";//接受的邮件内容(提供图片和文字模板)
try {
String from = "909411787@qq.com";
mMessageHelper = new MimeMessageHelper(mMessage, true);
mMessageHelper.setFrom(from);//发件人邮箱
mMessageHelper.setTo(user.getUsermail());//收件人邮箱
mMessageHelper.setSubject(subject);//邮件的主题
mMessageHelper.setText(content);//邮件的文本内容,true表示文本以html格式打开
javaMailSender.send(mMessage);//发送邮件
} catch (MessagingException e) {
e.printStackTrace();
}
System.out.println(user.getName());
System.out.println("反馈给用户");
System.out.println("=========================");
}
}
}
//生日关怀代码同上(获取员工入职日期同上)
public void sendBirthdayRemind() throws Exception {
MimeMessage mMessage = javaMailSender.createMimeMessage();//创建邮件对象
MimeMessageHelper mMessageHelper;
//查询用户的全部数据集
List<Users> users = userService.selectList(null);
//系统时间比较入职时间
Date dNow = new Date();
SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd");
System.out.println(ft.format(dNow));
//密送员工的领导(数据逻辑自己写)
//遍历集合 筛选入职的用户(以当天日期为主) 判断条件 需要用户提供
for (Users user : users) {
//获取员工所在部门
// Bumentable bumentable = bumentableMapper.selectById(user.getBumentable());
//查询用户部门所在的领导
if (ft.format(user.getBirthdays()).equals(ft.format(new Date()))) {
//反馈给用户
String subject = "生日快乐!";//接受的邮件主题
String content = "<h1 style='color:red;'>生日快乐</h1>";//接受的邮件内容(提供图片和文字模板)
try {
String from = "909411787@qq.com";
mMessageHelper = new MimeMessageHelper(mMessage, true);
mMessageHelper.setFrom(from);//发件人邮箱
mMessageHelper.setTo(user.getUsermail());//收件人邮箱
mMessageHelper.setSubject(subject);//邮件的主题
mMessageHelper.setText(content);//邮件的文本内容,true表示文本以html格式打开
javaMailSender.send(mMessage);//发送邮件
} catch (MessagingException e) {
e.printStackTrace();
}
System.out.println(user.getName());
System.out.println("反馈给用户");
System.out.println("=========================");
}
}
}
//定时任务 2月28号 自己设置
public void sendMailDmeo() throws Exception {
MimeMessage mMessage = javaMailSender.createMimeMessage();//创建邮件对象
MimeMessageHelper mMessageHelper;
//查询用户的全部数据集
List<Users> users = userService.selectList(null);
//系统时间比较入职时间
Date dNow = new Date();
SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd");
System.out.println(ft.format(dNow));
//密送员工的领导(数据逻辑自己写)
for (Users user : users) {
if (ft.format(user.getBirthdays()).contains("2-29")) {
//反馈给用户
String subject = "生日快乐!";//接受的邮件主题
String content = "<h1 style='color:red;'>生日快乐</h1>";//接受的邮件内容(提供图片和文字模板)
try {
String from = "909411787@qq.com";
mMessageHelper = new MimeMessageHelper(mMessage, true);
mMessageHelper.setFrom(from);//发件人邮箱
mMessageHelper.setTo(user.getUsermail());//收件人邮箱
mMessageHelper.setSubject(subject);//邮件的主题
mMessageHelper.setText(content);//邮件的文本内容,true表示文本以html格式打开
javaMailSender.send(mMessage);//发送邮件
} catch (MessagingException e) {
e.printStackTrace();
}
System.out.println(user.getName());
System.out.println("反馈给用户");
System.out.println("=========================");
}
}
}
}
2.6 运行项目 大功告成
点赞加收藏 双击评论666