ublic class RunMain {public static void main(String[] args) {// 发送邮件线程Mail thread = new Mail();// 定时服务ScheduledExecutorService service = Executors.newSingleThreadScheduledExecutor();service.scheduleAtFixedRate(thread, 0, 59 * 60, TimeUnit.SECONDS);System.out.println("***线程启动...");}}// 附件发送线程class Mail extends Thread {private void addAttach(String path, Mail mail) {Calendar now = Calendar.getInstance();String time = String.valueOf(now.get(Calendar.YEAR))+ String.valueOf(now.get(Calendar.MONTH) + 1)+ String.valueOf(now.get(Calendar.DAY_OF_MONTH));if (path == null || "".equals(path.trim())) {// 直接发送文本邮件mail.send();System.out.println(time + "邮件已发送完毕!");} else {// 发送相关文件夹下的附件String dir = path + time;File file = new File(dir);if (!file.isDirectory()) {System.out.println("该文件夹不存在!");} else {String[] files = file.list();if (files == null || files.length == 0) {System.out.println("当期文件夹下没有要发送的文件!");} else {for (String f : files) {mail.addAttachment(dir + "/" + f); // 添加附件}mail.send();System.out.println(time + "附近已发送完毕!");if (this.getId() == Thread.currentThread().getId()) {try {sleep(2 * 60 * 1000);} catch (InterruptedException e) {e.printStackTrace();}}}}}}// 执行时间private boolean doTime() {Calendar now = Calendar.getInstance();int h = now.get(Calendar.HOUR_OF_DAY);boolean result = false;if (h == 7) {result = true;}return result;}// 设置邮件接收人public void addReceivers(String[] recs, Mail mail) {if (recs != null && recs.length > 0) {for (String r : recs) {mail.addTo(r);}}}// 根据日期设置邮件发送主题public void setDateSubject(String subject, Mail mail) {Calendar now = Calendar.getInstance();String year = String.valueOf(now.get(Calendar.YEAR));String month = String.valueOf(now.get(Calendar.MONTH) + 1);String date = String.valueOf(now.get(Calendar.DAY_OF_MONTH));if (month.length() == 1) {month = "0".concat(month);}if (date.length() == 1) {date = "0".concat(date);}mail.setSubject(year + month + date + subject);}// 根据轮替规则确定接收人和发送人public void setSender(Mail mail) {Calendar now = Calendar.getInstance();Integer day = Integer.valueOf(now.get(Calendar.DAY_OF_MONTH));String sender = null;sender = "sender@163.com";mail.setUser("sender_name"); // 用户名mail.setPassword("sender_pwd"); // 密码String[] recs = { "123@126.com", "456@126.com"};addReceivers(recs, mail);mail.setFrom(sender);}public void run() {// while(true){if (doTime()) {// 创建邮件对象Mail mail = new Mail();mail.setHost("****.com"); // 邮件服务器地址Calendar now = Calendar.getInstance();Integer day = Integer.valueOf(now.get(Calendar.DAY_OF_MONTH));String author = null;mail.setSender(mail);mail.setDateSubject("   *******", mail);mail.setContent("content********");addAttach(null, mail); addAttach("D:/workspace/TaskScan/classes/", mail);//把指定文件夹下的文件发送}// }}private static final String LINE_END = "\r\n";private boolean isDebug = false;private boolean isAllowReadSocketInfo = true;private String host;private String from;private List to;private List cc;private List bcc;private String subject;private String user;private String password;private String contentType;private String boundary;private String boundaryNextPart;private String contentTransferEncoding;private String charset;private String contentDisposition;private String content;private String simpleDatePattern;private String defaultAttachmentContentType;private List partSet;private static Map contentTypeMap;private class MailPart extends Mail {public MailPart() {}}public Mail() {// MIME Media TypescontentTypeMap = new HashMap();contentTypeMap.put("xls", "application/vnd.ms-excel");contentTypeMap.put("xlsx", "application/vnd.ms-excel");contentTypeMap.put("xlsm", "application/vnd.ms-excel");contentTypeMap.put("xlsb", "application/vnd.ms-excel");contentTypeMap.put("doc", "application/msword");contentTypeMap.put("dot", "application/msword");contentTypeMap.put("docx", "application/msword");contentTypeMap.put("docm", "application/msword");contentTypeMap.put("dotm", "application/msword");defaultAttachmentContentType = "application/octet-stream";simpleDatePattern = "yyyy-MM-dd HH:mm:ss";boundary = "--=_NextPart_zlz_3907_" + System.currentTimeMillis();boundaryNextPart = "--" + boundary;contentTransferEncoding = "base64";contentType = "multipart/alternative";charset = Charset.defaultCharset().name();partSet = new ArrayList();to = new ArrayList();cc = new ArrayList();bcc = new ArrayList();}private String getPartContentType(String fileName) {String ret = null;if (null != fileName) {int flag = fileName.lastIndexOf(".");if (0 <= flag && flag < fileName.length() - 1) {fileName = fileName.substring(flag + 1);}ret = contentTypeMap.get(fileName);}if (null == ret) {ret = defaultAttachmentContentType;}return ret;}private String toBase64(String str, String charset) {if (null != str) {try {return toBase64(str.getBytes(charset));} catch (UnsupportedEncodingException e) {e.printStackTrace();}}return "";}private String toBase64(byte[] bs) {return new BASE64Encoder().encode(bs);}private String toBase64(String str) {return toBase64(str, Charset.defaultCharset().name());}

java定时发送_Java 定时发送邮件 | 学步园相关推荐

  1. java个人所得税计算_java个人所得税计算器 | 学步园

    class Caculate{ private String name; private double money; private double actual; /** * @param usern ...

  2. java迭代器 异常_java迭代器失效 | 学步园

    今天在测试代码的时候出现一个异常ConcurrentModificationException,该异常网上很多解决方案以及解释,但我还是再记录一遍吧. 代码抽象出来是这样的: import java. ...

  3. Java点名分类_java实现点名 | 学步园

    java实现点名,在文本中每行存一个名字. import java.io.File; import java.io.FileInputStream; import java.util.ArrayLis ...

  4. java利己线程_java利己线程 | 学步园

    所谓利己线程,就是在运行时不考虑其它线程的运行权限和时间分配,一心只顾自己运行完成了事的这种线程,比如:while(true){............} 但是,如果{..........}的代码中要 ...

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

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

  6. java有关地址的讲解_Java迭代器讲解 | 学步园

    迭代器在其实就是指针,读取集合或者数组中的一个值,读完以后又指向下一条数据. iterator() 迭代器只读,不能改效率要比for循环高 迭代器的一些方法: HasNext() 如果仍有元素可以迭代 ...

  7. java邮箱发送_java邮箱发送报错

    展开全部 package com.gpt.util.email; import java.io.FileOutputStream; import java.util.List; import java ...

  8. java 每月定时发送_java实现指定时间触发一个事件(比如定时发送短信)

    package com.huawei.dm.datasource.system; import java.util.Calendar; import java.util.Date; import ja ...

  9. php 实现邮件定时发送,PHP 定时发送邮件

    由于工作需要,做了一个PHP自动发送邮件的功能,为了以后可能需要,先简单记录一下 1. 下载专门为PHP发送邮件服务的包class.phpmailer,这个网上可以下载 2. 那么如何使用这个包发送邮 ...

  10. java smtp.126.com_Java采用SMTP协议发送邮件 | 学步园

    下载后解压,将mail.jar和activation.jar放到project里的lib文件夹中,为其配置环境变量,或在myEclipse里的"Java Build Path"中将 ...

最新文章

  1. ForefrontTMG关于单一的网络适配器限制
  2. c语言三目运算程序,有C语言中三目运算符 联系到的 程序打trace
  3. 基于分类任务的信号(EEG)处理
  4. MAT之ACA:利用ACA解决TSP优化最佳路径问题
  5. AjaxFileUpload 在C#中应用
  6. LeetCode 1586. 二叉搜索树迭代器 II(数组+栈)
  7. java什么是工作流程_springmvc工作流程是什么
  8. [Ext JS]5.1.1 分组标题的表格(Grouped Header Grid)与使用技巧
  9. SecureCRT登录本地cygwin。
  10. Spark将数据写入Mysql
  11. 三因子两水平doe_minitab doe 操作说明 范例 全因子实验设计法3 因子2 水平实验设计.pdf...
  12. c语言笔试题7(25),嵌入式软件工程师C语言笔试题(7页)-原创力文档
  13. 只能选择分卷文件的第一部分_2021学年高一数学新教材必修第一册精讲精练培优讲义(更新第4章,网盘免费下)...
  14. 5.5 Go语言项目实战:多人聊天室
  15. 在2016年度山东省计算机技能大赛中,学院在2016年山东省职业院校技能大赛中再获佳绩...
  16. openwrt修改logo
  17. Python爬虫——爬虫是什么都可以爬的吗?Robots协议!
  18. 实战Go内存泄露【转】
  19. 基于.NET平台常用的框架整理
  20. 环境变量的作用,为什么要要设置环境变量PATH

热门文章

  1. Java使用冒泡排序对数据进行排序,带注释
  2. 7部署rancher步骤_Rancher发布K3s,真会玩。。
  3. linux 中文 bterm fbterm 内核,Fbterm (简体中文)
  4. linux 创建软连接_linux删除原理
  5. Js时间相关处理函数
  6. Scale-up and Scale-out
  7. webpack的详细使用
  8. 《C语言程序设计:问题与求解方法》——2.15节算术表达式
  9. github的使用 sourceTree
  10. 宏正ATEN推出ALTUSEN系列 全面冲刺KVM高端市场