以下是通过xml文件进行的监控路径、文件以及邮件信息的配置,读取xml文件使用的是三方jar包:dom4j
收发邮件采用的是最普通的javamail,需要两个jar包,mail.jar和activition.jar
关键代码如下:
public boolean sendHtmlMail(MailSenderInfo mailInfo){
// 判断是否需要身份认证 MyAuthenticator authenticator = null; Properties pro = mailInfo.getProperties(); //如果需要身份认证,则创建一个密码验证器 if (mailInfo.isValidate()) { authenticator = new MyAuthenticator(mailInfo.getUserName(), mailInfo.getPassword()); } // 根据邮件会话属性和密码验证器构造一个发送邮件的session Session sendMailSession = Session.getDefaultInstance(pro,authenticator); sendMailSession.setDebug(true); sendMailSession.setDebugOut(System.out); try { // 根据session创建一个邮件消息 Message mailMessage = new MimeMessage(sendMailSession); // 创建邮件发送者地址 Address from = new InternetAddress(mailInfo.getFromAddress()); // 设置邮件消息的发送者 mailMessage.setFrom(from); // 创建邮件的接收者地址,并设置到邮件消息中 Address to = new InternetAddress(mailInfo.getToAddress()); // Message.RecipientType.TO属性表示接收者的类型为TO mailMessage.setRecipient(Message.RecipientType.TO,to); // 设置邮件消息的主题 mailMessage.setSubject(mailInfo.getSubject()); // 设置邮件消息发送的时间 mailMessage.setSentDate(new Date()); // MiniMultipart类是一个容器类,包含MimeBodyPart类型的对象 Multipart mainPart = new MimeMultipart(); // 创建一个包含HTML内容的MimeBodyPart BodyPart html = new MimeBodyPart(); // 设置HTML内容 html.setContent(mailInfo.getContent(), "text/html; charset=utf-8"); mainPart.addBodyPart(html); // 将MiniMultipart对象设置为邮件内容 mailMessage.setContent(mainPart); // 发送邮件 Transport.send(mailMessage); return true; } catch (MessagingException ex) { ex.printStackTrace(); } return false; }这边还想说的一点是,mb,kb和字节之间的转换,获取文件长度(file.length)之后得到的是long型的字节数,1mb=1024kb,1kb=1024b,最好用这样的写法:
BigDecimal megabyte = new BigDecimal(1024 * 1024);
float returnValue = filesize.divide(megabyte, 2, BigDecimal.ROUND_UP) .floatValue();精度更准确!
关于打成jar包和定时运行的办法:
由于用到了三个额外的jar包,所有打包方法如下:
第一步:
第二步:
第三步:选择自己的工程,存放路径,选择加入jar包,完成
注意:
打好的jar包一般没有入口程序,需自行设置,这边不多赘述
定时运行需要用到系统自带的计划任务:
这边有个创建基本任务和创建任务,选择创建任务。这里说一下两个的区别,创建任务是自定义的任务,可以循环执行,也可以执行完就结束。基本任务是系统启动时一起执行的任务,只有当系统关闭时才会销毁。
这边创建任务也不多赘述了,比较简单,需要注意的是:jar包不可直接运行,需要利用bat文件通过 jar -jar 包名 参数【参数。。】的方式执行,所以任务里面的操作执行的是bat文件而不是jar包