首页 >> 大全

Quartz定时邮件发送多个备份文件 - 黑壳网

2023-12-03 大全 17 作者:考证青年

壳叔搞笑一刻

正文

之前由于黑壳网的博客数据库,一直没有做定期备份的处理,虽然现在不一定会出问题,但起码数据备份意识上还是要有的。

之前有考虑过用七牛云等第三方服务,但是最后由于种种原因,暂时不考虑用第三方服务。

所以自己手写了一个定时备份程序,简单的思路↓

到达指定时间,将数据库备份文件发送利用邮箱,发送至指定邮箱,达到定期备份的目的。

特别提示:如果文件对安全性要求很高的话,不推荐

邮件定时发送是点发送还是保存_邮件定时发送失败怎么回事_

程序采用Java语言和maven强大的依赖体系+流行的,为什么要用Java,只是写着好玩不要太较真了。

项目代码

pom.xml文件

的包是整个项目不可缺少的

 <properties><springframework.version>4.0.6.RELEASEspringframework.version><quartz.version>2.2.1quartz.version>properties><dependencies><dependency><groupId>junitgroupId><artifactId>junitartifactId><version>3.8.1version><scope>testscope>dependency><dependency><groupId>javax.servletgroupId><artifactId>javax.servlet-apiartifactId><version>3.0.1version>dependency><dependency><groupId>javax.mailgroupId><artifactId>mailartifactId><version>1.4version>dependency><dependency><groupId>org.quartz-schedulergroupId><artifactId>quartzartifactId><version>${quartz.version}version>dependency><dependency><groupId>org.springframeworkgroupId><artifactId>spring-context-supportartifactId><version>${springframework.version}version>dependency><dependency><groupId>org.springframeworkgroupId><artifactId>spring-txartifactId><version>${springframework.version}version>dependency><dependency><groupId>org.springframeworkgroupId><artifactId>spring-webartifactId><version>${springframework.version}version>dependency><dependency><groupId>org.springframeworkgroupId><artifactId>spring-webmvcartifactId><version>${springframework.version}version>dependency>dependencies>

MyJob.java 继承 然后

有钻研精神的可以一点一点扒代码看 。

import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.scheduling.quartz.QuartzJobBean;import java.util.Date;/*** kzyuan Job 参考* @description black husk* @description http://www.bhusk.com*/
public class MyJob extends QuartzJobBean {private static Logger logger = LoggerFactory.getLogger(DatabaseBackupJob.class);@Overrideprotected void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException {System.out.println("执行时间:"+new Date());}
}

_邮件定时发送是点发送还是保存_邮件定时发送失败怎么回事

.xml 可以理解为配置文件 注释很齐全


<beans xmlns="http://www.springframework.org/schema/beans"xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p"xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsdhttp://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd"><bean name="myJobDetail" class="org.springframework.scheduling.quartz.JobDetailFactoryBean"><property name="jobClass" value="com.bhusk.quartz.Job.MyJob"/><property name="name" value="myJob"/><property name="group" value="jobs"/><property name="durability" value="true"/><property name="applicationContextJobDataKey" value="applicationContext"/>bean><bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"><property name="jobDetail" ref="myJobDetail"/><property name="cronExpression" value="0 0 3 * * ?"/>bean><bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean"><property name="triggers"><list><ref bean="cronTrigger"/>list>property>bean>beans>

发送邮件工具类

java 实现邮件的发送, 抄送及多附件

这个工具类来源网络,具体精准位置也不清楚了

import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.internet.MimeUtility;
import java.io.UnsupportedEncodingException;
import java.util.Properties;/*** 邮件管理器* java 实现邮件的发送, 抄送及多附件*/
public class EmailManager {public static String username = "keshu@bhusk.com"; // 服务邮箱(from邮箱)public static String password = ""; // 邮箱密码public static String senderNick = "黑壳网的壳叔";   // 发件人昵称private Properties props; // 系统属性private Session session; // 邮件会话对象private MimeMessage mimeMsg; // MIME邮件对象private Multipart mp;   // Multipart对象,邮件内容,标题,附件等内容均添加到其中后再生成MimeMessage对象private static EmailManager instance = null;public EmailManager() {props = System.getProperties();props.put("mail.smtp.auth", "true");props.put("mail.transport.protocol", "smtp");props.put("mail.smtp.host", "smtp.163.com");props.put("mail.smtp.port", "25");props.put("username", username);props.put("password", password);// 建立会话session = Session.getDefaultInstance(props);session.setDebug(false);}public static EmailManager getInstance() {if (instance == null) {instance = new EmailManager();}return instance;}/*** 发送邮件** @param from     发件人* @param to       收件人* @param copyto   抄送* @param subject  主题* @param content  内容* @param fileList 附件列表* @return*/public boolean sendMail(String from, String[] to, String[] copyto, String subject, String content, String[] fileList) {boolean success = true;try {mimeMsg = new MimeMessage(session);mp = new MimeMultipart();// 自定义发件人昵称String nick = "";try {nick = javax.mail.internet.MimeUtility.encodeText(senderNick);} catch (UnsupportedEncodingException e) {e.printStackTrace();}// 设置发件人
//          mimeMsg.setFrom(new InternetAddress(from));mimeMsg.setFrom(new InternetAddress(from, nick));// 设置收件人if (to != null && to.length > 0) {String toListStr = getMailList(to);mimeMsg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(toListStr));}// 设置抄送人if (copyto != null && copyto.length > 0) {String ccListStr = getMailList(copyto);mimeMsg.setRecipients(Message.RecipientType.CC, InternetAddress.parse(ccListStr));}// 设置主题mimeMsg.setSubject(subject);// 设置正文BodyPart bp = new MimeBodyPart();bp.setContent(content, "text/html;charset=utf-8");mp.addBodyPart(bp);// 设置附件if (fileList != null && fileList.length > 0) {for (int i = 0; i < fileList.length; i++) {bp = new MimeBodyPart();FileDataSource fds = new FileDataSource(fileList[i]);bp.setDataHandler(new DataHandler(fds));bp.setFileName(MimeUtility.encodeText(fds.getName(), "UTF-8", "B"));mp.addBodyPart(bp);}}mimeMsg.setContent(mp);mimeMsg.saveChanges();// 发送邮件if (props.get("mail.smtp.auth").equals("true")) {Transport transport = session.getTransport("smtp");transport.connect((String) props.get("mail.smtp.host"), (String) props.get("username"), (String) props.get("password"));
//              transport.sendMessage(mimeMsg, mimeMsg.getRecipients(Message.RecipientType.TO));
//              transport.sendMessage(mimeMsg, mimeMsg.getRecipients(Message.RecipientType.CC));transport.sendMessage(mimeMsg, mimeMsg.getAllRecipients());transport.close();} else {Transport.send(mimeMsg);}System.out.println("邮件发送成功");} catch (MessagingException e) {e.printStackTrace();success = false;} catch (UnsupportedEncodingException e) {e.printStackTrace();success = false;}return success;}/*** 发送邮件** @param from     发件人* @param to       收件人, 多个Email以英文逗号分隔* @param cc       抄送, 多个Email以英文逗号分隔* @param subject  主题* @param content  内容* @param fileList 附件列表* @return*/public boolean sendMail(String from, String to, String cc, String subject, String content, String[] fileList) {boolean success = true;try {mimeMsg = new MimeMessage(session);mp = new MimeMultipart();// 自定义发件人昵称String nick = "";try {nick = javax.mail.internet.MimeUtility.encodeText(senderNick);} catch (UnsupportedEncodingException e) {e.printStackTrace();}// 设置发件人
//          mimeMsg.setFrom(new InternetAddress(from));mimeMsg.setFrom(new InternetAddress(from, nick));// 设置收件人if (to != null && to.length() > 0) {mimeMsg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to));}// 设置抄送人if (cc != null && cc.length() > 0) {mimeMsg.setRecipients(Message.RecipientType.CC, InternetAddress.parse(cc));}// 设置主题mimeMsg.setSubject(subject);// 设置正文BodyPart bp = new MimeBodyPart();bp.setContent(content, "text/html;charset=utf-8");mp.addBodyPart(bp);// 设置附件if (fileList != null && fileList.length > 0) {for (int i = 0; i < fileList.length; i++) {bp = new MimeBodyPart();FileDataSource fds = new FileDataSource(fileList[i]);bp.setDataHandler(new DataHandler(fds));bp.setFileName(MimeUtility.encodeText(fds.getName(), "UTF-8", "B"));mp.addBodyPart(bp);}}mimeMsg.setContent(mp);mimeMsg.saveChanges();// 发送邮件if (props.get("mail.smtp.auth").equals("true")) {Transport transport = session.getTransport("smtp");transport.connect((String) props.get("mail.smtp.host"), (String) props.get("username"), (String) props.get("password"));transport.sendMessage(mimeMsg, mimeMsg.getAllRecipients());transport.close();} else {Transport.send(mimeMsg);}System.out.println("邮件发送成功");} catch (MessagingException e) {e.printStackTrace();success = false;} catch (UnsupportedEncodingException e) {e.printStackTrace();success = false;}return success;}public String getMailList(String[] mailArray) {StringBuffer toList = new StringBuffer();int length = mailArray.length;if (mailArray != null && length < 2) {toList.append(mailArray[0]);} else {for (int i = 0; i < length; i++) {toList.append(mailArray[i]);if (i != (length - 1)) {toList.append(",");}}}return toList.toString();}public static void main(String[] args) {String from = username;String[] to = {"keshu@bhusk.com", "1520812121@qq.com"};String[] copyto = {"lu12121@qq.com"};String subject = "黑壳网数据库备份";String content = "没有数据就没有一切,数据库备份就是一种防范灾难于未然的强力手段,没有了数据,应用再花哨也是镜中花水中月。";String[] fileList = new String[2];fileList[0] = "~/solo_h2/db.mv.db";fileList[1] = "~/solo_h2/db.trace.db";EmailManager.getInstance().sendMail(from, to, copyto, subject, content, fileList);}
}

参考项目

参考项目 :

tags: quartz

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了