邮件定时发送java实现
本文总结如何通过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实现相关推荐
- java 延时发送邮件_java编程实现邮件定时发送的方法
本文实例讲述了java编程实现邮件定时发送的方法.分享给大家供大家参考,具体如下: 最近做项目时客户提出了一个需求:系统定时发送E-mail到其客户,达到通知的效果.先将实例分享给大家,如果确实有一些 ...
- java实现邮件定时发送
需求:系统定时发送E-mail到其客户,达到通知的效果.先将实例分享给大家,如果确实有一些帮助的话,请大家来点掌声! 首先介绍java定时器(java.util.Timer)有定时执行计划任务的功能, ...
- java 邮件 定时_java实现邮件定时发送
需求:系统定时发送E-mail到其客户,达到通知的效果.先将实例分享给大家,如果确实有一些帮助的话,请大家来点掌声! 首先介绍java定时器(java.util.Timer)有定时执行计划任务的功能, ...
- 在 Lotus Notes 中设置邮件定时发送的方法及代理功能介绍
孙 茂伟, 测试工程师, IBM 孙茂伟在北京科技大学获得工学学士.工学硕士学位,现于 IBM CDL ECM FileNet EForms TEAM 从事自动化测试相关工作. 简介: 本文将向广大 ...
- pwd python 安装 模块_Python自动化办公之邮件定时发送
Python自动化之邮件的定时发送,我们这里使用网易163邮箱. Python邮件操作相关模块的安装 yagmail,The goal here is to make it as simple and ...
- php 实现邮件定时发送,php定时发送邮件解决方案
php计划任务的实现 为了定时更新某一文件,需要程序自动运行,从网上搜到了两种方法:ignore_user_abort() 和crontab ignore_user_abort()函数搭配set_ti ...
- php 实现邮件定时发送,PHP实现邮件的自动发送
这样就可以实现邮件的发送了.结果如下: 如果要实现自动发送邮件的话,那么程序必须能自动的运行.程序在后台自动运行的代码如下:<?php ignore_user_abort(); // 后台运行 ...
- python邮件定时发送短信_Python趣味编程:如何定时发短信给Ta讲笑话
原标题:Python趣味编程:如何定时发短信给Ta讲笑话 人一无聊,就会想:反正每天都要给Ta问候一声早安,为何不同时讲个笑话呢?如果能写个程序每天早上定时给Ta发一条问候早安同时讲一个笑话的短信该多 ...
- python邮件定时发送短信_python实现自动定时给女朋友发手机短信,每天一个笑话!...
加小编QQ群:832339352 即可自动获取大量Python视频教程以及各类PDF! 大四的生活就是这么无聊,我琢磨着也学了这么多东西了,为啥不能用自己的知识来给生活找点乐子呢?我想反正每天都要给T ...
最新文章
- NVIDIA TensorRT高性能深度学习推理
- u-boot2011.09 u-boot.img 的流程跟踪
- 【科研必备】保持高效论文写作的10个原则!
- CentOs7中安装sonarQube服务系列------1.CentOS7中Docker的安装
- 45、Power Query-缺少功能区选项卡
- java 示例_功能Java示例 第5部分–将I / O移到外部
- 表单-图片浏览上传-单选框(二)
- C++ 读取文件操作
- 爬虫-post请求-RR网的登陆页-草稿-关注js反爬虫手法-只看不钻
- 【免费】某机构最新3980元机器学习/大数据课程高速下载,限量200份
- WdatePicker日历控件使用方法
- c语言标准库函数system,C 库函数
- C# 模拟鼠标(mouse_event)
- 深度学习基础(一) —— softmax 及 logsoftmax
- redis异常处理篇(持续更新中...)
- Android四大组件每个组件的作用?它们都可以开启多进程吗?
- jpg转pdf怎么转换?jpg转pdf方法
- JDK与Eclipse版本
- 手动修改美化7zip图标 - 附替换文件
- Macbook 修改照片的大小