JavaMail发送邮件



package com.fix.ciss.quartz.job;

import java.sql.SQLException;
import java.util.HashMap;

import org.quartz.Job;
import org.quartz.JobDataMap;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import com.fix.ciss.mail.MailSender;
import com.fix.ciss.mail.MailSenderInfo;
import com.founder.fix.apputil.log.DebugLog;
import com.founder.fix.apputil.log.LogFactory;
import com.founder.fix.dbcore.DBGetResult;
import com.founder.fix.dbcore.DBGetResultHandle;

public class TaskOfMailJob implements Job {

	/**
	 * 用改执行发送邮件功能 修改日期:2012/05/10
	 * 
	 * @author pengpan
	 */
	private static final DebugLog log = LogFactory.getDebugLog(TaskOfMailJob.class);

	@Override
	public synchronized void execute(JobExecutionContext context)
			throws JobExecutionException {
		JobDataMap param = context.getMergedJobDataMap();
		DBGetResult result = null;
		if (param != null) {
			HashMap map = (HashMap) param.get("param");
			String mail_subject = (String) map.get("mail_subject");
			String tesk_content = (String) map.get("tesk_content");
			String receive_addr = (String) map.get("receive_addr");
			Long task_id = (Long) map.get("task_id");
			MailSenderInfo mailSendInfo = (MailSenderInfo)map.get("mailSendInfo");
			MailSenderInfo mailInfo = new MailSenderInfo();
			mailInfo.setMailServerHost(mailSendInfo.getMailServerHost()); // 发送邮件的服务器IP
			mailInfo.setMailServerPost(mailSendInfo.getMailServerPost());
			mailInfo.setProtocol(mailSendInfo.getProtocol());
			mailInfo.setValidate(true);
			mailInfo.setUserName(mailSendInfo.getUserName()); // 发送者用户名
			mailInfo.setPassword(mailSendInfo.getPassword()); // 发送邮箱密码
			mailInfo.setToAddress(receive_addr); // 接受者地址
			mailInfo.setFromAddress(mailSendInfo.getFromAddress()); // 邮件发送者的地址
			mailInfo.setSubject(mail_subject);
			mailInfo.setContent(tesk_content);
			log.info("开始发送邮件");
			boolean sendFlag = MailSender.sendHtmlMail(mailInfo);
			try {
				result = DBGetResultHandle.createDBGetResult();
				if (sendFlag) {
					log.debug("TASK_ID:"+task_id+"发送成功");
					result.execSQLCmd("UPDATE T_QUARTZ_TASK SET TASK_STATUE = '2' WHERE TASK_ID="+task_id);
				} else {
					log.debug("TASK_ID:"+task_id+"发送失败");
					result.execSQLCmd("UPDATE T_QUARTZ_TASK SET TASK_STATUE = '3' WHERE TASK_ID="+task_id);
				}
			} catch (Exception e) {
				log.debug(e.getMessage());
				log.debug("TASK_ID:"+task_id+"发送失败");
				try {
					result.execSQLCmd("UPDATE T_QUARTZ_TASK SET TASK_STATUE = '3' WHERE TASK_ID="+task_id);
				} catch (SQLException e1) {
				    log.error(e.getMessage());
					e1.printStackTrace();
				}
				e.printStackTrace();
			}finally{
				try {
					DBGetResultHandle.closeDBGetResult(result);
				} catch (SQLException e) {
					log.error(e.getMessage());
					e.printStackTrace();
				}
			}

		}
	}
}

package com.fix.ciss.mail;

import java.util.Date;
import java.util.Properties;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import javax.mail.Address;
import javax.mail.BodyPart;
import javax.mail.Message;
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 com.fix.ciss.quartz.job.TaskOfMailJob;
import com.founder.fix.apputil.log.DebugLog;
import com.founder.fix.apputil.log.LogFactory;

/**
 * 简单邮件(不带附件的邮件)
 * @author pengpan
 * 
 */
public class MailSender {

	/**
	 * 以HTML格式发送邮件 支持html元素
	 * @param mailInfo待发送的邮件信息
	 * @return
	 */
	private static final DebugLog log = LogFactory.getDebugLog(MailSender.class);
	public static boolean sendHtmlMail(MailSenderInfo mailInfo) {
		MyAuthenticator authenticator = null;
		Properties pro = mailInfo.getProperties();
		if (mailInfo.isValidate()) {
			authenticator = new MyAuthenticator(mailInfo.getUserName(),
					mailInfo.getPassword()); // 如果需要身份认证,则创建一个密码验证器
		}
		Session sendMailSession = Session
				.getDefaultInstance(pro, authenticator);
		try {
			if(!checkMailPattern(mailInfo.getToAddress())){
				 log.debug("接收地址不正确");
			     return false;
			}
			Address from = new InternetAddress(mailInfo.getFromAddress());
			Message mailMessage = new MimeMessage(sendMailSession);
			mailMessage.setFrom(from);
			Address to = new InternetAddress(mailInfo.getToAddress());
			mailMessage.setRecipient(Message.RecipientType.TO, to);

			mailMessage.setSubject(mailInfo.getSubject());
			mailMessage.setSentDate(new Date());

			// MiniMultipart类是一个容器类,包含MineBodyPart类型的对象
			Multipart mainPart = new MimeMultipart();
			BodyPart html = new MimeBodyPart();
			html.setContent(mailInfo.getContent(), "text/html;charset=utf-8");
			mainPart.addBodyPart(html);
			mailMessage.setContent(mainPart); // 将MiniMultipart对象设置为邮件内容
			Transport.send(mailMessage);
			return true;
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return false;
		}

	}
	
	private static boolean checkMailPattern(String mailAdress){
		 Pattern p = Pattern.compile("\\w{1,}@\\w{1,}.[a-zA-Z]{2,}");
		 Matcher m = p.matcher(mailAdress);
		 return m.matches();
	}
}




package com.fix.ciss.mail;

import java.io.Serializable;
import java.util.Properties;

public class MailSenderInfo implements Serializable{
	private String mailServerHost; // 发送邮件的服务器
	private int mailServerPost; // 发送邮件的服务器端口
	private String protocol; // 发送邮件的模式(协议)

	public String getProtocol() {
		return protocol;
	}

	public void setProtocol(String protocol) {
		this.protocol = protocol;
	}

	private String fromAddress; // 邮件发送者地址
	private String toAddress; // 邮件接受者地址
	private String userName; // 登录邮件发送服务器的用户名
	private String password; // 登录邮件发送服务器的密码
	private boolean validate = false; // 是否需要身份验证
	private String subject; // 邮件主题
	private String content; // 邮件内容
	private String[] attachFileNames; // 邮件附件的文件名

	public Properties getProperties() {
		Properties p = new Properties();
		p.put("mail.smtp.host", this.mailServerHost);
		p.put("mail.smtp.port", this.mailServerPost);
		p.put("mail.smtp.auth", validate ? "true" : "false");
		p.put("mail.transport.protocol", this.protocol);
		return p;
	}

	public String getMailServerHost() {
		return mailServerHost;
	}

	public void setMailServerHost(String mailServerHost) {
		this.mailServerHost = mailServerHost;
	}

	public int getMailServerPost() {
		return mailServerPost;
	}

	public void setMailServerPost(int mailServerPost) {
		this.mailServerPost = mailServerPost;
	}

	public String getFromAddress() {
		return fromAddress;
	}

	public void setFromAddress(String fromAddress) {
		this.fromAddress = fromAddress;
	}

	public String getToAddress() {
		return toAddress;
	}

	public void setToAddress(String toAddress) {
		this.toAddress = toAddress;
	}

	public String getUserName() {
		return userName;
	}

	public void setUserName(String userName) {
		this.userName = userName;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public boolean isValidate() {
		return validate;
	}

	public void setValidate(boolean validate) {
		this.validate = validate;
	}

	public String getSubject() {
		return subject;
	}

	public void setSubject(String subject) {
		this.subject = subject;
	}

	public String getContent() {
		return content;
	}

	public void setContent(String content) {
		this.content = content;
	}

	public String[] getAttachFileNames() {
		return attachFileNames;
	}

	public void setAttachFileNames(String[] attachFileNames) {
		this.attachFileNames = attachFileNames;
	}
}

package com.fix.ciss.mail;

import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;

public class MyAuthenticator extends Authenticator {
	String userName = null;
	String password = null;

	public MyAuthenticator() {

	}

	public MyAuthenticator(String userName, String password) {
		this.userName = userName;
		this.password = password;
	}

	protected PasswordAuthentication getPasswordAuthentication() {

		return new PasswordAuthentication(userName, password);
	}
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值