使用邮件通知方式实现异常报警功能

1,433 阅读2分钟

首先我们需要了解一下邮件发送(SMTP)和邮件接收(POP3)的协议:      SMTP(Simple MailTransfer Protocol)即简单邮件传输协议, 它是一组用于由源地址到目的地址传送邮件的规则,由它来控制邮件的中转方式。 SMTP协议属于TCP/IP协议簇,它帮组每台计算机在发送或中转信件时找到下一个目的地。 SMTP服务器则是遵循SMTP协议的发送邮件服务器,用来发送或中转发出的电子邮件。              POP3(Post Office Protocol -Version3)本协议主要用于主持客户端远程管理在服务器上的电子邮件。

邮件的发送接收过程

图片.png

我们这里使用网易邮箱为例

1.开通SMTP协议

图片.png

图片.png

这一步的主要目的是开通SMTP协议和获取客户端授权码(授权码需要自己设置类似于自己的邮箱密码)

二,代码实现

1.引入依赖
<dependency>
   <groupId>com.sun.mail</groupId>
   <artifactId>javax.mail</artifactId>
   <version>1.6.0</version>
</dependency>
2.代码编写
/**
 * 邮件
 * author:CoderZS
 */
public class javaMailTest {

    private static final String HOST = "smtp.163.com";   // 发送邮件邮箱的配置
    private static final Integer PORT = 25;
    private static final String USERNAME = "zs520it@163.com";//163邮箱账号
    private static final String PASSWORD = "000000";//163邮箱---授权码
    private static final String EMAILFORM = "zs520it@163.com";  //发送邮件的用户
    private static JavaMailSenderImpl mailSender = createMailSender();


    private static final String EMAILNAME = "数据异常报告";  //收到邮件显示对方邮件名称 总体名称
    private static final String EMAILTOPNAME = "定时任务1数据采集异常";  //邮件名称

    /**
     * 邮件发送器
     *
     * @return 配置好的工具
     */
    private static JavaMailSenderImpl createMailSender() {
        JavaMailSenderImpl sender = new JavaMailSenderImpl();
        sender.setHost(HOST);
        sender.setPort(PORT);
        sender.setUsername(USERNAME);
        sender.setPassword(PASSWORD);
        sender.setDefaultEncoding("Utf-8");
        Properties p = new Properties();
        p.setProperty("mail.smtp.timeout", "25000");
        p.setProperty("mail.smtp.auth", "false");
        sender.setJavaMailProperties(p);
        return sender;
    }

    /**
     * 发送邮件
     * @param to      邮件接收人
     * @param subject 主题
     * @param html    发送内容
     * @throws UnsupportedEncodingException 异常
     */
    public static void sendHtmlMail(String to, String subject, String html) {
        try {
            MimeMessage mimeMessage = mailSender.createMimeMessage();

            // 设置utf-8或GBK编码,否则邮件会有乱码
            MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage, true, "utf-8");
            messageHelper.setFrom(EMAILFORM, EMAILNAME);
            messageHelper.setTo(to);
            messageHelper.setSubject(subject);
            messageHelper.setText(html, true);
            mailSender.send(mimeMessage);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
     sendHtmlMail("769671508@qq.com", EMAILTOPNAME, "数据入库异常! CoderZS 我在简书等你");
    }

}

邮件通知

邮件通知