• Spring-定时器和邮件发送


    一、定时器的实现(task)

      1、在XML配置文件中引入约束

        xmlns:task="http://www.springframework.org/schema/task"

        http://www.springframework.org/schema/task

        http://www.springframework.org/schema/task/spring-task.xsd

      

      2、编写定时器类,和方法

      3、使用xml配置文件

        

        加载配置文件就可以执行定时任务了,图为两秒执行一次。

    二、邮件发送

      1、Java mail发送邮件

        1) Maven项目引入java mail坐标,也可以手动安装

        

    package com.shsxt.service;
    
    import org.apache.commons.lang3.StringUtils;
    
    import javax.activation.DataHandler;
    import javax.activation.DataSource;
    import javax.activation.FileDataSource;
    import javax.mail.*;
    import javax.mail.internet.*;
    import java.io.File;
    import java.io.UnsupportedEncodingException;
    import java.nio.charset.Charset;
    import java.util.Properties;
    
    public class MailService {
    
        public void mail(String fromUser, String[] receivers, String setSubject, String content, String[] files) {
            // 判断参数是否为空
            if (!judgment(fromUser, receivers, setSubject, content)){
                return;
            }
            // 获取session
            Session session = init(fromUser);
            Message message = new MimeMessage(session);
            // 发送人
            sender(fromUser, message);
            // 收件人
            recipients(receivers, message);
            // 主题
            subject(message,setSubject);
            // 设置html和附件
            Multipart multipart = new MimeMultipart();
            // html内容
            Content(content, multipart);
            // 判断是否有附件
            if (null != files && files.length > 0) {
                // 上传附件
                fileUp(files, multipart);
            }
            settingContext(message, multipart);
            // 发送
            send(message);
        }
    
        // 8、发送
        private void send(Message message) {
            try {
                Transport.send(message);
            } catch (MessagingException e) {
                e.printStackTrace();
            }
        }
    
        // 7、设置上下文
        private void settingContext(Message message, Multipart multipart) {
            try {
                message.setContent(multipart);
            } catch (MessagingException e) {
                e.printStackTrace();
            }
        }
    
    
        // 6、设置主题
        private void subject(Message message,String setSubject) {
            try {
                message.setSubject(setSubject);
            } catch (MessagingException e) {
                e.printStackTrace();
            }
        }
    
        // 5、上传附件
        private void fileUp(String[] files, Multipart multipart) {
            try {
                for (String filePath : files) {
                    BodyPart file = new MimeBodyPart();
                    File temp = new File(filePath);
                    file.setDataHandler(new DataHandler(new FileDataSource(new File(filePath))));
                    file.setFileName(MimeUtility.encodeText(temp.getName()));
                    multipart.addBodyPart(file);
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        // 4、设置html内容
        private void Content(String content, Multipart multipart) {
            try {
                BodyPart html = new MimeBodyPart();
                html.setContent(content, "text/html;charset=utf-8");
                multipart.addBodyPart(html);
            } catch (MessagingException e) {
                e.printStackTrace();
            }
        }
    
        // 3、设置收件人
        private void recipients(String[] receivers, Message message) {
            try {
                Address[] addresses = new InternetAddress[receivers.length];
                for (int i = 0; i < addresses.length; i++) {
                    addresses[i] = new InternetAddress(receivers[i]);
                }
                message.setRecipients(Message.RecipientType.TO, addresses);
            } catch (MessagingException e) {
                e.printStackTrace();
            }
        }
    
        // 2、设置发送人
        private void sender(String fromUser, Message message) {
            try {
                Address from = new InternetAddress(fromUser);
                message.setFrom(from);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        // 1、初始化
        private Session init(String fromUser) {
            Properties properties = new Properties();
            // 邮箱服务器主机
            properties.put("mail.smtp.host", "smtp.163.com");
            properties.put("mail.smtp.auth", "true");
            properties.put("mail.smtp.port", 25);
    
            Session session = Session.getDefaultInstance(properties, new Authenticator() {
                @Override
                protected PasswordAuthentication getPasswordAuthentication() {
                    return new PasswordAuthentication("15657262398@163.com", "d140120");
                }
            });
            return session;
        }
    
        // 0、判断参数是否为空
        private boolean judgment(String fromUser, String[] receivers, String setSubject, String content) {
            boolean flag = true;
            if (StringUtils.isBlank(fromUser) || StringUtils.isAnyBlank(receivers) || StringUtils.isBlank(setSubject) || StringUtils.isBlank(content)) {
                flag = false;
            }
            return flag;
        }
    
    
    }

      2、spring环境下发送邮件

        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"
           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">
    
        <context:component-scan base-package="com.mail"/>
    
        <bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
            <property name="host" value="smtp.163.com"/><!--发送email的邮件服务器主机名-->
            <property name="username" value="test@163.com"/><!--用户名-->
            <property name="password" value="test"/><!--授权码-->
        </bean>
        <bean id="simpleMailMessage" class="org.springframework.mail.SimpleMailMessage">
            <property name="subject" value="hello mail"/>
            <property name="from" value="15657262398@163.com"/>
        </bean>
    </beans>

        

        装配和使用邮件发送器

    package com.mail;
    
    import org.springframework.mail.MailSender;
    import org.springframework.mail.SimpleMailMessage;
    import org.springframework.stereotype.Service;
    
    import javax.annotation.Resource;
    @Service
    public class OrderManagerImpl implements OrderManager {
    
        @Resource
        private MailSender mailSender;
        @Resource
        private SimpleMailMessage simpleMailMessage;
    
        @Override
        public void placeOrder() {
            SimpleMailMessage msg=new SimpleMailMessage(this.simpleMailMessage);
            msg.setTo("test@163.com");
            msg.setText("hello");
            this.mailSender.send(msg);
        }
    }
  • 相关阅读:
    在react中实现CSS模块化
    react 组件的生命周期
    HTTP缓存机制与原理
    H5新增API和操作DOM
    js操作json方法总结
    gulp详细教程——前端自动化构建工具
    JavaScript你必须掌握的8大知识点
    HTTP请求与服务器响应流程
    max-height实现任意高度元素的展开收缩动画
    移动端轮播图手势分析+源码
  • 原文地址:https://www.cnblogs.com/dhome/p/9721218.html
Copyright © 2020-2023  润新知