springboot2.X集成email

2019-07-05  本文已影响0人  小吖么小一郎

加入依赖

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

新建一个枚举Messages

package com.example.demo.email;
public enum Messages {
    STOP(-1,"暂停服务","stop")
    ,SUCCESS(2000,"成功","success")
    ,SYSTEM_ERROR(9999,"系统错误","system error")
    ,AUTH_FAIL(4001,"无访问权限","no access")
    ,USERNAME_PASSWORD_FAIL(4002, "用户名或密码错误", "username or password error")
    ,USERNAME_EMPTY(4003, "用户名不能为空", "Username is null")
    ,PASSWORD_EMPTY(4004, "密码不能为空", "password is null")
    ,VERIFICATION_CODE_ERROR(4005,"验证码错误", "Verification code error")
    ,EMAIL_EMPTY(4006,"邮箱不能为空","Email is null")
    ,EMAIL_INVALID(4007,"邮箱不合法","email invalid")
    ,VERIFICATION_CODE_EMPTY(4008, "验证码不能为空", "verification code is null")
    ,USERNAME_EXISTS(4009, "用户名已存在", "username exists")
    ,EMAIL_EXISTS(4010,"邮箱已经存在", "email exists")
    ,EMAIL_NOT_EXISTS(4011,"邮箱不存在", "email not exists")
    ,INVITE_CODE_EXISTS(4012,"推荐码不存在", "invite code not exists")
    ,AVAILABLE_ASSETS_INSUFFICIENT(4013,"可用资产不足", "available assets insufficient")
    ,PROHIBIT_LOGIN(4014,"禁止登录", "prohibit login")
    ,CONCURRENT_EXECUTOR_ERROR(5000,"当前访问人数较多,请稍后再试","")
    ;


    private int code;
    private String de;
    private String zh;
    private String en;

    Messages(int code, String zh, String en) {
        this.de = zh;
        this.code = code;
        this.zh = zh;
        this.en = en;
    }

    public enum Lang {
        de,zh,en;
    }

    public int getCode() {
        return code;
    }

    public String getDe() {
        return de;
    }

    public String getZh() {
        return zh;
    }

    public String getEn() {
        return en;
    }
}

新建一个MessageListener类

package com.example.demo.email;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.event.EventListener;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;

import javax.mail.internet.MimeMessage;

@Component
public class MessageListener {
    @Autowired
    private JavaMailSender mailSender;

    @EventListener
    @Async
    public void simpleMailMessagEvent(SimpleMailMessagEvent event) throws Exception {
        mailSender.send((SimpleMailMessage)event.getSource());
    }

    @EventListener
    @Async
    public void mimeMailMessagEvent(MimeMailMessagEvent event) throws Exception {
        mailSender.send((MimeMessage)event.getSource());
    }
}

新建MailMessageService类

package com.example.demo.email;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.ApplicationContext;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.stereotype.Service;

@Service
public class MailMessageService {
    @Value("${spring.mail.username}")
    private String username;
    @Autowired
    private ApplicationContext applicationContext;

    /**
     * 发送简单邮件
     * @param subject 主题
     * @param text 内容
     * @param to 收件人
     */
    public void sendSimple(String subject, String text, String... to){
        SimpleMailMessage message = new SimpleMailMessage();
        message.setFrom(username);
        message.setTo(to);
        message.setSubject(subject);
        message.setText(text);
        applicationContext.publishEvent(new SimpleMailMessagEvent(message));
    }
}

新建一个接口Constants

package com.example.demo.email;

import java.math.BigDecimal;

public interface Constants {
    String X_AUTH_TOKEN = "X-AUTH-TOKEN";
    // token过期时间单位分钟
    long TOKEN_EXPIRATION_TIMEOUT = 120L;
    // 邮箱注册验证码前缀
    String REGISTER_MAIL_CODE_PREFIX = "REGISTER_MAIL_CODE_";
    // 邮箱登录验证码前缀
    String LOGIN_MAIL_CODE_PREFIX = "LOGIN_MAIL_CODE_";
    // 国际化参数
    String LANGUAGE = "lang";
    // token存储前缀
    String TOKEN_PREFIX = "token_";
    // 用户与token关系
    String USER_TOKEN_PREFIX = "user_token_";
    // 小于这个值则忽略不计算
    BigDecimal IGNORE_EXEC = new BigDecimal(0.000001);

    // redis和token关系
    String LOGIN_TOKEN="LOGIN_TOKEN_";
    // MD5和salt关系
    String MD5_SALT="hehongqian";
}

新建一个MimeMailMessagEvent类

package com.example.demo.email;

import org.springframework.context.ApplicationEvent;
import org.springframework.mail.javamail.MimeMailMessage;

public class MimeMailMessagEvent extends ApplicationEvent {
    private static final long serialVersionUID = -6424588529678254971L;

    public MimeMailMessagEvent(MimeMailMessage message) {
        super(message);
    }
}

新建一个SimpleMailMessageEvent类

package com.example.demo.email;
import org.springframework.context.ApplicationEvent;
import org.springframework.mail.SimpleMailMessage;

public class SimpleMailMessagEvent extends ApplicationEvent {
    private static final long serialVersionUID = -6424588529678254971L;

    public SimpleMailMessagEvent(SimpleMailMessage message) {
        super(message);
    }
}

新建一个MailMessageController类

package com.example.demo.controller;


/*
 * @Author: i_heh
 * @CreateDate: 2019/7/1
 * @CreateTime: 11:01
 */

import com.example.demo.email.MailMessageService;
import org.flowable.engine.ProcessEngine;
import org.flowable.engine.ProcessEngineConfiguration;
import org.flowable.engine.impl.cfg.StandaloneProcessEngineConfiguration;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/mail")
public class MailMessageController {

    @Autowired
    private MailMessageService mailMessageService;
    // 测试邮件
    private static String topic = "测试邮件";
    // 内容
    private static String text = "今天天气真好!!!!!!!!!!!!!!!!!!";
    // 收件人
    private static String to = "i_hehongqian@sina.com";

    // 发送文字邮件
    @RequestMapping("/send")
    public String sendMail(){
        mailMessageService.sendSimple(topic,text,to);
        return "发送成功";
    }
    // 发送带附件邮件
    @RequestMapping("/sendFile")
    public String sendFileMail(){
        return null;
    }
}

在properties文件加入

spring.mail.host=smtp.sina.com
spring.mail.username=i_hehongqian@sina.com
spring.mail.password=
spring.mail.port=465
spring.mail.default-encoding=UTF-8
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
spring.mail.properties.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory

spring.mail.password中的密码是需要登录到自己的邮箱,在设置-》账户里面开启POP3/SMTP服务,然后就会生成一个密码


微信图片_20190705153457.png
上一篇下一篇

猜你喜欢

热点阅读