Java使用QQ邮箱发送邮件

前提

为了及时掌握采集系统的运行情况,我们简单开发了一个敏感值统计与邮件通知的程序。程序由两部分组成:一部分是敏感值统计,统计系统中的敏感值,比如采集的数据条数、新增的数据条数、各字段出现的次数等;一部分是邮件通知,将统计情况告知技术人员,方便出现异常时技术人员能及时介入处理。通知内容如下:

日检时间范围:2021-12-29 00:00:00-2021-12-29 23:59:59
============warn============
“银保监_消费者教育及风险提示”采集了328条数据,字段“source”值遗漏了268个
“银保监_行政监管措施”采集了432条数据,字段“source”值遗漏了248个
“消费保”采集了2400条数据,字段“投诉进程”值遗漏了8个
“微信”采集了600条数据,字段“digest”值遗漏了47============log============
“银保监_监管动态”采集了432条数据,其中新增数据有0条;采集数据的字段值统计:{"docId":432,"publish_time":432,"id":432,"source":432,"is_complete":432,"title":432,"content":432}
“银保监_政策解读”采集了432条数据,其中新增数据有0条;采集数据的字段值统计:{"spider_time":432,"docId":432,"publish_time":432,"id":432,"_id":432,"is_complete":432,"source":432,"title":432,"doc_id":432,"content":432}
“银保监_公告通知”采集了432条数据,其中新增数据有0条;采集数据的字段值统计:{"spider_time":432,"docId":432,"publish_time":432,"id":432,"_id":432,"is_complete":432,"source":432,"title":432,"doc_id":432,"content":432}
“银保监_新闻发布会及访谈”采集了144条数据,其中新增数据有0条;采集数据的字段值统计:{"spider_time":144,"docId":144,"publish_time":144,"id":144,"_id":144,"is_complete":144,"source":144,"title":144,"doc_id":144,"content":144}
......

本文主要介绍了程序中邮件通知功能的实现方案。

实现方案一:JavaMail

Maven

<dependency>
    <groupId>javax.mail</groupId>
    <artifactId>mail</artifactId>
    <version>1.4.7</version>
</dependency>

主要代码

        Properties properties = new Properties();
        properties.put("mail.transport.protocol", "smtp"); // 连接协议
        properties.put("mail.smtp.host", "smtp.qq.com"); // 主机名
        properties.put("mail.smtp.port", 465); // 端口号
        properties.put("mail.smtp.auth", "true");
        properties.put("mail.smtp.ssl.enable", "true"); // 设置是否使用ssl安全连接,一般都使用
        properties.put("mail.debug", "true"); // 设置是否显示debug信息,true会在控制台显示相关信息

        // 得到回话对象
        Session session = Session.getInstance(properties);

        // 获取邮件对象
        Message message = new MimeMessage(session);
        // 设置发件人邮箱地址
        message.setFrom(new InternetAddress("xxx@qq.com"));
        // 设置收件人邮箱地址
        message.setRecipient(Message.RecipientType.TO, new InternetAddress("xxx@qq.com")); // 一个收件人
        // message.setRecipients(Message.RecipientType.TO, new InternetAddress[]{new InternetAddress("xxx@qq.com"), new InternetAddress("xxx@qq.com"), new InternetAddress("xxx@qq.com")}); // 多个收件人
        // 设置邮件标题
        message.setSubject("这是一封测试邮件");
        // 设置邮件内容
        message.setText("这是测试邮件的正文");

        // 得到邮差对象
        Transport transport = session.getTransport();
        // 连接自己的邮箱账户
        transport.connect("xxx@qq.com", "xxxxxx"); // 密码为QQ邮箱开通的stmp服务后得到的客户端授权码
        // 发送邮件
        transport.sendMessage(message, message.getAllRecipients());
        transport.close();

实现方案二:JavaMailSender

Spring提供了非常好用的JavaMailSender接口实现邮件发送。

Maven

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

主要代码

        JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl();
        javaMailSender.setHost("smtp.qq.com");
        javaMailSender.setPort(465);
        javaMailSender.setUsername("xxx@qq.com");
        javaMailSender.setPassword("xxxxxx");
        javaMailSender.setDefaultEncoding("UTF-8");

        Properties properties = new Properties();
        properties.setProperty("mail.smtp.timeout", "30000");
        properties.setProperty("mail.smtp.auth", "true");
        properties.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
        javaMailSender.setJavaMailProperties(properties);

        // 构建一个邮件对象
        MimeMessage mimeMessage = javaMailSender.createMimeMessage();
        // true表示构建一个可以带附件的邮件对象
        MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true);
        // 设置邮件主题
        mimeMessageHelper.setSubject("这是一封测试邮件");
        // 设置邮件发送者
        mimeMessageHelper.setFrom("xxx@qq.com");
        // 设置邮件接收者,可以有多个接收者
        mimeMessageHelper.addTo("xxx@qq.com");
        // 设置邮件抄送人,可以有多个抄送人
        mimeMessageHelper.addCc("xxx@qq.com");
        // 设置邮件隐秘抄送人,可以有多个隐秘抄送人
        mimeMessageHelper.addBcc("xxx@qq.com");
        // 设置邮件发送日期
        mimeMessageHelper.setSentDate(new Date());
        // 设置邮件的正文
        mimeMessageHelper.setText("<p>这是测试邮件的正文</p>", true);

        // 发送邮件
        javaMailSender.send(mimeMessage);

补充

QQ邮箱客户端授权码

登录QQ邮箱,依次点击“设置”->“账户”->“POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务”即可获得授权码。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值