定时发送邮件

来源:转载

package com.bai.mail.utils;import java.util.*;import javax.mail.*;import javax.mail.internet.*;import java.util.Date;import javax.activation.*;import org.apache.log4j.Logger;import java.io.*;/** * 发送邮件 * @author *2012-4-2 */public class sendMail {private Logger log = Logger.getLogger(getClass().getName());private MimeMessage mimeMsg; // MIME邮件对象private Session session; // 邮件会话对象private Properties props; // 系统属性private boolean needAuth = false; // smtp是否需要认证private String username = ""; // smtp认证用户名和密码private String password = "";private Multipart mp; // Multipart对象,邮件内容,标题,附件等内容均添加到其中后再生成MimeMessage对象/** * */public sendMail() {//setSmtpHost(getConfig.mailHost);// 如果没有指定邮件服务器,就从getConfig类中获取//createMimeMessage();}public sendMail(String smtp) {setSmtpHost(smtp);createMimeMessage();}/** * @param hostName * String */public void setSmtpHost(String hostName) {System.out.println("设置系统属性:mail.smtp.host = " + hostName);if (props == null)props = System.getProperties(); // 获得系统属性对象props.put("mail.smtp.host", hostName); // 设置SMTP主机}/** * @return boolean */public boolean createMimeMessage() {try {log.debug("准备获取邮件会话对象!");//System.out.println("准备获取邮件会话对象!");session = Session.getDefaultInstance(props, null); // 获得邮件会话对象} catch (Exception e) {System.err.println("获取邮件会话对象时发生错误!" + e);return false;}System.out.println("准备创建MIME邮件对象!");try {mimeMsg = new MimeMessage(session); // 创建MIME邮件对象mp = new MimeMultipart();mimeMsg.setSentDate(new Date());// 发送邮件的时间return true;} catch (Exception e) {System.err.println("创建MIME邮件对象失败!" + e);return false;}}/** * @param need * boolean */public void setNeedAuth(boolean need) {System.out.println("设置smtp身份认证:mail.smtp.auth = " + need);if (props == null)props = System.getProperties();if (need) {props.put("mail.smtp.auth", "true");} else {props.put("mail.smtp.auth", "false");}}/** * @param name * String * @param pass * String */public void setNamePass(String name, String pass) {username = name;password = pass;}/** * @param mailSubject * String * @return boolean */public boolean setSubject(String mailSubject) {System.out.println("设置邮件主题!");try {mimeMsg.setSubject(mailSubject);return true;} catch (Exception e) {System.err.println("设置邮件主题发生错误!");return false;}}/** * @param mailBody * String */public boolean setBody(String mailBody) {try {BodyPart bp = new MimeBodyPart();bp.setContent("" + mailBody, "text/html;charset=utf-8");mp.addBodyPart(bp);return true;} catch (Exception e) {System.err.println("设置邮件正文时发生错误!" + e);return false;}}/** * @param name * String * @param pass * String */public boolean addFileAffix(String filename) {System.out.println("增加邮件附件:" + filename);try {BodyPart bp = new MimeBodyPart();FileDataSource fileds = new FileDataSource(filename);bp.setDataHandler(new DataHandler(fileds));// bp.setFileName(fileds.getName());bp.setFileName(MimeUtility.encodeText(fileds.getName(), "utf-8","B")); // 解决附件乱码问题mp.addBodyPart(bp);return true;} catch (Exception e) {System.err.println("增加邮件附件:" + filename + "发生错误!" + e);return false;}}/** * @param name * String * @param pass * String */public boolean setFrom(String from) {System.out.println("设置发信人!");try {mimeMsg.setFrom(new InternetAddress(from)); // 设置发信人return true;} catch (Exception e) {return false;}}/** * @param name * String * @param pass * String */public boolean setTo(String to) {if (to == null)return false;try {mimeMsg.setRecipients(Message.RecipientType.TO,InternetAddress.parse(to));return true;} catch (Exception e) {return false;}}/** * @param name * String * @param pass * String */public boolean setCopyTo(String copyto) {if (copyto == null)return false;try {mimeMsg.setRecipients(Message.RecipientType.CC,(Address[]) InternetAddress.parse(copyto));return true;} catch (Exception e) {return false;}}/** * @param name * String * @param pass * String */public boolean sendout() {try {mimeMsg.setContent(mp);mimeMsg.saveChanges();System.out.println("正在发送邮件....");Session mailSession = Session.getInstance(props, null);Transport transport = mailSession.getTransport("smtp");transport.connect((String) props.get("mail.smtp.host"), username,password);transport.sendMessage(mimeMsg,mimeMsg.getRecipients(Message.RecipientType.TO));// transport.send(mimeMsg);System.out.println("发送邮件成功!");transport.close();return true;} catch (Exception e) {System.err.println("邮件发送失败!" + e);return false;}}}
QuartzJob.java
/** * 定时任务 * @author *2012-4-7 */public class QuartzJob {public void work() { //当前时间Calendar cal = Calendar.getInstance();SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd");String datetime=sdf.format(cal.getTime());Mails mail = new Mails();MailDao maildao = new MailDao();//获取数据库所有信息List list = maildao.getAllMails(-1, -1);for(int i=0;i<list.size();i++){Mails mails = (Mails)list.get(i);String birth = mails.getBirth().toString();//System.out.println(birth);if(datetime.substring(datetime.indexOf("-")+1).equals(birth.substring(birth.indexOf("-")+1))){String email = mails.getEmail().toString();//System.out.println(email);String mailbody = "生日快乐!";sendMail themail = new sendMail("smtp.qq.com");themail.setNeedAuth(true);//邮件标题if (themail.setSubject("标题") == false)return;//邮件信息if (themail.setBody(mailbody) == false)return;//收件人if (themail.setTo(email) == false)return;//发送邮件的人if (themail.setFrom("[email protected]") == false)return;//邮件附件//if (themail.addFileAffix("d:/学生.txt") == false)//return;//发邮件的用户名和密码themail.setNamePass("[email protected]", "a123456");//判断是否发送邮件if (themail.sendout() == false)return;}else{System.out.println("数据库中没有客户今天生日!!!");}} } }

bean.xml

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd"><beans> <!-- 要调用的工作类 --> <bean ></bean> <!-- 定义调用对象和调用对象的方法 --> <bean > <!-- 调用的类 --> <property> <ref bean="quartzJob" /> </property> <!-- 调用类中的方法 --> <property> <value>work</value> </property> </bean> <!-- 定义触发时间 --> <bean > <property> <ref bean="jobtask" /> </property> <!-- cron表达式 --> <property> <value>0 35 09 ? * *</value> </property> </bean> <!-- 总管理类 如果将lazy-init='false'那么容器启动就会执行调度程序 --> <bean lazy-init="false" autowire="no" > <property> <list> <ref bean="doTime" /> </list> </property> </bean> </beans> 

public class Mails {//表识private int id;//客户的生日private Date birth;//客户的邮件private String email;public Mails() {super();}public Mails(int id, Date birth, String email) {this();this.id = id;this.birth = birth;this.email = email;}/** * @return the id */public int getId() {return id;}/** * @param id the id to set */public void setId(int id) {this.id = id;}/** * @return the birth */public Date getBirth() {return birth;}/** * @param birth the birth to set */public void setBirth(Date birth) {this.birth = birth;}/** * @return the email */public String getEmail() {return email;}/** * @param email the email to set */public void setEmail(String email) {this.email = email;}}



分享给朋友:
您可能感兴趣的文章:
随机阅读: