本文总结如何通过java实现邮件接口的定时发送任务。

1、邮箱服务器地址和端口

以139邮箱为例,获取服务器地址和端口。139邮箱的路径:设置-常见设置-邮箱协议设置

2、客户端配置

工具:springboot2.4.3使用maven,使用java11

pom.xml引入mail第三方工具

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

application.yml配置

spring :mail:host: smtp.139.comport: 465password:  XXXXXusername: 13XXXXXX@139.comdefault-encoding: UTF-8properties:mail.smtp.auth: truemail.smtp.socketFactory.fallback : truemail.smtp.socketFactory.class : javax.net.ssl.SSLSocketFactorymail.smtp.socketFactory.port : 465mail.smtp.port : 465

3、发送邮件的util类

1)简单的文本

引入JavaMailSender,新建邮件发送util类,发送简单的文本邮件


import org.springframework.mail.javamail.JavaMailSender;@Service
public class SendmailImpl{@Autowiredprivate JavaMailSender mailSender;@Value("${spring.mail.username}")  //发送人的邮箱  比如13XXXXXX@139.comprivate String from;/*** *发送简单的文本邮件* @param title* @param content* @param email*/public void sendSimpleMail(String title,String content,String email) {SimpleMailMessage message = new SimpleMailMessage();message.setFrom(from);//发送人邮箱message.setSubject(title);//标题message.setTo(email);//对方邮箱message.setText(content);//内容mailSender.send(message);}
}

2)多个收件人

引入一个MimeMessageHelper,增加多个收件人的功能支撑

/*** *多个收件人* @param title* @param content* @param email* @throws MessagingException */public void sendBatchMai(String title,String content,String[] email) throws MessagingException {MimeMessage message = mailSender.createMimeMessage();//true表示需要创建一个multipart messageMimeMessageHelper helper = new MimeMessageHelper(message,true);helper.setFrom(from);helper.setSubject(title);helper.setText(content,true);//多个收件人List<InternetAddress> list = new ArrayList<InternetAddress>();// 不能使用string类型的类型,这样只能发送一个收件人 for(int i=0;i<email.length;i++) {list.add(new InternetAddress(email[i]));}InternetAddress[] address = list.toArray(new InternetAddress[list.size()]);message.setRecipients(Message.RecipientType.TO, address);message = helper.getMimeMessage();mailSender.send(message);}

3)文件流发附件

运用装饰器(Decorator)模式,将InputStream接口转换为InputStreamSource接口。首先将InputStream转换byte[] ,再转换为ByteArrayResource,而ByteArrayResource的接口就是InputStreamSource。

/*** 文件流发邮件* @param title 邮件标题* @param content 邮件内容* @param to  收件人* @param attachmentFilenameList  文件名的list列表* @param inputStreamList 附件文件流的list列表* @param copyto 抄送人* @throws Exception*/public void sendMailStream(String title,String content,String[] to,String attachmentFilename,List<InputStream> inputStreamList) {//true表示需要创建一个multipart messageMimeMessageHelper helper;try {MimeMessage message = mailSender.createMimeMessage();helper = new MimeMessageHelper(message,true,"utf-8");helper.setFrom(from);helper.setSubject(title);helper.setText(content,true);//启用htmlhelper.setTo(to);//文件附件if(attachmentFilename!=null) {helper.addAttachment(attachmentFilename, new ByteArrayResource(IOUtils.toByteArray(inputStreamList.get(0))));}message = helper.getMimeMessage();mailSender.send(message);} catch (MessagingException e) {// TODO Auto-generated catch block
//            logger.error(e.getLocalizedMessage());e.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch block
//            logger.error(e.getLocalizedMessage());e.printStackTrace();}}

4)全家桶

包括多个收件,附件以及文件内容的支持

/*** *邮件发送全* @param title   标题* @param content 内容* @param email   发件人地址* @param file    附件* @throws Exception */public void sendMail(String title,String content,String[] email,List<File> attaches) throws Exception {MimeMessage message = mailSender.createMimeMessage();//true表示需要创建一个multipart messageMimeMessageHelper helper = new MimeMessageHelper(message,true,"utf-8");helper.setFrom(from);helper.setSubject(title);helper.setText(content,true);//文件附件if(attaches.size()>0) {for(File file : attaches) {helper.addAttachment(MimeUtility.encodeText(file.getName()), file);}}//多个收件人List<InternetAddress> list = new ArrayList<InternetAddress>();// 不能使用string类型的类型,这样只能发送一个收件人 for(int i=0;i<email.length;i++) {list.add(new InternetAddress(email[i]));}InternetAddress[] address = list.toArray(new InternetAddress[list.size()]);message.setRecipients(Message.RecipientType.TO, address);message = helper.getMimeMessage();mailSender.send(message);}

邮件定时发送java实现相关推荐

  1. java 延时发送邮件_java编程实现邮件定时发送的方法

    本文实例讲述了java编程实现邮件定时发送的方法.分享给大家供大家参考,具体如下: 最近做项目时客户提出了一个需求:系统定时发送E-mail到其客户,达到通知的效果.先将实例分享给大家,如果确实有一些 ...

  2. java实现邮件定时发送

    需求:系统定时发送E-mail到其客户,达到通知的效果.先将实例分享给大家,如果确实有一些帮助的话,请大家来点掌声! 首先介绍java定时器(java.util.Timer)有定时执行计划任务的功能, ...

  3. java 邮件 定时_java实现邮件定时发送

    需求:系统定时发送E-mail到其客户,达到通知的效果.先将实例分享给大家,如果确实有一些帮助的话,请大家来点掌声! 首先介绍java定时器(java.util.Timer)有定时执行计划任务的功能, ...

  4. 在 Lotus Notes 中设置邮件定时发送的方法及代理功能介绍

    孙 茂伟, 测试工程师, IBM 孙茂伟在北京科技大学获得工学学士.工学硕士学位,现于 IBM CDL ECM FileNet EForms TEAM 从事自动化测试相关工作. 简介: 本文将向广大 ...

  5. pwd python 安装 模块_Python自动化办公之邮件定时发送

    Python自动化之邮件的定时发送,我们这里使用网易163邮箱. Python邮件操作相关模块的安装 yagmail,The goal here is to make it as simple and ...

  6. php 实现邮件定时发送,php定时发送邮件解决方案

    php计划任务的实现 为了定时更新某一文件,需要程序自动运行,从网上搜到了两种方法:ignore_user_abort() 和crontab ignore_user_abort()函数搭配set_ti ...

  7. php 实现邮件定时发送,PHP实现邮件的自动发送

    这样就可以实现邮件的发送了.结果如下: 如果要实现自动发送邮件的话,那么程序必须能自动的运行.程序在后台自动运行的代码如下:<?php ignore_user_abort(); // 后台运行 ...

  8. python邮件定时发送短信_Python趣味编程:如何定时发短信给Ta讲笑话

    原标题:Python趣味编程:如何定时发短信给Ta讲笑话 人一无聊,就会想:反正每天都要给Ta问候一声早安,为何不同时讲个笑话呢?如果能写个程序每天早上定时给Ta发一条问候早安同时讲一个笑话的短信该多 ...

  9. python邮件定时发送短信_python实现自动定时给女朋友发手机短信,每天一个笑话!...

    加小编QQ群:832339352 即可自动获取大量Python视频教程以及各类PDF! 大四的生活就是这么无聊,我琢磨着也学了这么多东西了,为啥不能用自己的知识来给生活找点乐子呢?我想反正每天都要给T ...

最新文章

  1. NVIDIA TensorRT高性能深度学习推理
  2. u-boot2011.09 u-boot.img 的流程跟踪
  3. 【科研必备】保持高效论文写作的10个原则!
  4. CentOs7中安装sonarQube服务系列------1.CentOS7中Docker的安装
  5. 45、Power Query-缺少功能区选项卡
  6. java 示例_功能Java示例 第5部分–将I / O移到外部
  7. 表单-图片浏览上传-单选框(二)
  8. C++ 读取文件操作
  9. 爬虫-post请求-RR网的登陆页-草稿-关注js反爬虫手法-只看不钻
  10. 【免费】某机构最新3980元机器学习/大数据课程高速下载,限量200份
  11. WdatePicker日历控件使用方法
  12. c语言标准库函数system,C 库函数
  13. C# 模拟鼠标(mouse_event)
  14. 深度学习基础(一) —— softmax 及 logsoftmax
  15. redis异常处理篇(持续更新中...)
  16. Android四大组件每个组件的作用?它们都可以开启多进程吗?
  17. jpg转pdf怎么转换?jpg转pdf方法
  18. JDK与Eclipse版本
  19. 手动修改美化7zip图标 - 附替换文件
  20. Macbook 修改照片的大小

热门文章

  1. 很有创意的吐司折叠坐垫
  2. Android的死机、重启问题分析方法
  3. Vue指令(续)、小黑记事本案例
  4. minio:安装部署并安装成windows服务
  5. 卓越性能 の 军火库(非广告)
  6. [Xilinx FPGA] #6 Xilinx FPGA 芯片选型
  7. java短信验证 网易_网易短信java实现
  8. 天线基础知识(一)天线分类
  9. Linux SMP启动流程学习(三)
  10. Linux内核进程管理专题报告