搭建SSMP项目整合日志+Quartz定时任务实现自动邮件发送!!

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" />
<!--        &lt;!&ndash; 扫描sql配置文件:mapper需要的xml文件 &ndash;&gt;-->
        <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

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值