定时发送邮件

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 id="quartzJob" class="com.bai.mail.biz.QuartzJob"></bean>  
    <!-- 定义调用对象和调用对象的方法 -->  
    <bean id="jobtask"  
        class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">  
        <!-- 调用的类 -->  
        <property name="targetObject">  
            <ref bean="quartzJob" />  
        </property>  
        <!-- 调用类中的方法 -->  
        <property name="targetMethod">  
            <value>work</value>  
        </property>  
    </bean>  
    <!-- 定义触发时间 -->  
    <bean id="doTime"  
        class="org.springframework.scheduling.quartz.CronTriggerBean">  
        <property name="jobDetail">  
            <ref bean="jobtask" />  
        </property>  
        <!-- cron表达式 -->  
        <property name="cronExpression">  
            <value>0 35 09 ? * *</value>  
        </property>  
    </bean>  
    <!-- 总管理类 如果将lazy-init='false'那么容器启动就会执行调度程序  -->  
    <bean id="startQuertz" lazy-init="false" autowire="no"  
        class="org.springframework.scheduling.quartz.SchedulerFactoryBean">  
        <property name="triggers">  
            <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;
	}


}

你可能感兴趣的:(java,bean)