`
269629151
  • 浏览: 120198 次
社区版块
存档分类
最新评论
收藏列表
标题 标签 来源
发送邮件 发送邮件
Config类


import java.util.*;
import java.io.*;

/**
 * <p>Title: Co-Up网络协同办公平台</p>
 *
 * <p>Description:配置类,负责对ApplicationResources.properties配置文件的存取操作</p>
 *
 * <p>Copyright: Copyright (c) 2007</p>
 *
 * <p>Company: zdvictory</p>
 *
 * @author jerrie
 * @version 1.0
 */

public class Config {

    /**配置类实例*/
    private static Config config = null;

    private Properties props = new Properties();

    /**
     * 获取配置类的一个实例
     * @return Config
     */
    public static Config getInstance() {
        if (config == null) {
            config = new Config();
            config.init();
        }
        return config;
    }

    private void init() {
        try {
            props.load(this.getClass().getClassLoader().getResourceAsStream(
                    "ApplicationResources.properties"));
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }

    /**
     * 根据键获取值
     * @param key String
     * @return String
     */
    public String getValue(String key) {
        return props.getProperty(key);
    }

    /**
     * 设置键-值
     * @param key String
     * @param value String
     */
    public void setValue(String key, String value) {
        props.setProperty(key, value);
    }
}


import java.util.ArrayList;
/**
 * 发送邮件实体用于发送邮件时候使用
 * @author zdvictory
 *
 */
public class MailInstance {
	
	private String toAddr = null; // 接收邮件地址
	private String title = null; // 邮件标题
	private String attachPath = null; // 邮件附件路径
	private String attachName = null; // 邮件附件名
	private String sendtext = null; // 邮件内容
	private ArrayList<String> MutliTo = null; // 群发用户
	
	public ArrayList<String> getMutliTo() {
		return MutliTo;
	}

	public void setMutliTo(ArrayList<String> mutliTo) {
		MutliTo = mutliTo;
	}

	public String getSendtext() {
		return sendtext;
	}

	public void setSendtext(String sendtext) {
		this.sendtext = sendtext;
	}


	public String getToAddr() {
		return toAddr;
	}

	public void setToAddr(String toAddr) {
		this.toAddr = toAddr;
	}


	public String getTitle() {
		return title;
	}

	public void setTitle(String title) {
		this.title = title;
	}

	public String getAttachPath() {
		return attachPath;
	}

	public void setAttachPath(String attachPath) {
		this.attachPath = attachPath;
	}

	public String getAttachName() {
		return attachName;
	}

	public void setAttachName(String attachName) {
		this.attachName = attachName;
	}
	
	/**
	 * 邮件实体属性校验方法
	 * @return
	 */
	public boolean validate() throws Exception{
		boolean result = true;
		if(getToAddr()==null||"".equals(getToAddr())){
			result = false;
			throw new Exception("未设置发送到邮箱地址!");
		}
		
		if(getSendtext()==null||"".equals(getSendtext())){
			result = false;
			throw new Exception("发送内容为空!");
		}
		
		if(getTitle()==null||"".equals(getTitle())){
			result = false;
			throw new Exception("邮件标题不能为空!");
		}
		return result;
	}

}


import java.util.ArrayList;
import java.util.Date;
import java.util.Properties;

import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
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.zdvictory.platform.util.Config;
/**
 * 发送邮件类
 * @author yxh 2011-10-11
 *
 */
public class MailSender {
	
	private  Properties props = new Properties();// 创建属性对象
	private  Session session=null;//邮件回话对象
	private  MimeMessage message=null;//邮件信息对象
	private MailInstance mail = null;//邮件实体
	
	
	private String mailHost; // 邮件服务器地址
	private String emailFrom; // 邮件发送者
	private String emailUserName;
	private String emailPassword;
	
	
	public String getMailHost() {
		return mailHost;
	}

	public void setMailHost(String mailHost) {
		this.mailHost = mailHost;
	}

	public String getEmailFrom() {
		return emailFrom;
	}

	public void setEmailFrom(String emailFrom) {
		this.emailFrom = emailFrom;
	}

	public String getEmailUserName() {
		return emailUserName;
	}

	public void setEmailUserName(String emailUserName) {
		this.emailUserName = emailUserName;
	}

	public String getEmailPassword() {
		return emailPassword;
	}

	public void setEmailPassword(String emailPassword) {
		this.emailPassword = emailPassword;
	}

	/**
	 * 初始化邮件发送条件
	 */
	private void sendMailInit(){
		props.put("mail.smtp.host", mailHost);// 设置smtp服务器地址
		props.put("mail.smtp.auth", "true");// 设置服务器smtp需要验证
		session=Session.getInstance(props, null);// 创建新邮件会话
		message = new MimeMessage(session);// 创建过程对象
	}
	
	/**
	 * 设置发送邮件的内容
	 * @return
	 * @throws Exception
	 */
	private Multipart setMailPart() throws Exception{
		//初始化内容对象
		Multipart multipart = new MimeMultipart();
		//初始化内容身体对象
		BodyPart contentPart = new MimeBodyPart();
		
		contentPart.setContent(mail.getSendtext(), "text/html;charset=GBK");// 设置信件内容
		multipart.addBodyPart(contentPart);
		//添加附件到发送内容中
		if (mail.getAttachPath() != null && 
				!"".equals(mail.getAttachPath())&&
				mail.getAttachName() != null&& 
				!"".equals(mail.getAttachName())){
			BodyPart attachmentPart = new MimeBodyPart();
			DataSource source = new FileDataSource(mail.getAttachPath());
			attachmentPart.setDataHandler(new DataHandler(source));
			attachmentPart.setFileName(mail.getAttachName());
			multipart.addBodyPart(attachmentPart);
		}
		return multipart;
	}
	
	
	
	/**
	 * 发送单个邮件
	 * @throws Exception
	 */
	public boolean sendMail() throws Exception{
		try{
			//如果传入的邮件实体为null则退出
			if(mail==null){
				throw new Exception("邮件实体为空发送失败!");
			}
			//校验邮件实体
			if(!mail.validate()){
				throw new Exception("邮件实体不合法发送失败!");
			}
			sendMailInit();//初始化发送邮件条件
			message.setFrom(new InternetAddress(emailFrom));//设置要发邮件的邮箱
			message.addRecipient(Message.RecipientType.TO, new InternetAddress(
					mail.getToAddr()));//设置发送到的邮箱
			message.setSubject(mail.getTitle());// 设置主题
			
			message.setContent(setMailPart());//设置邮件内容与附件
			message.saveChanges();
			
			Transport transport = session.getTransport("smtp");
			transport.connect(mailHost, emailUserName, emailPassword);
			transport.sendMessage(message, message.getAllRecipients());
			transport.close();
			return true;
		}catch(Exception e){
			System.out.println("邮件发送失败!");
			throw e;
		}
	}

	/**
	 * 群发邮件
	 * @throws Exception
	 */
	public boolean sendMails() throws Exception {
		try{
			//如果传入的邮件实体为null则退出
			if(mail==null){
				throw new Exception("邮件实体为空发送失败!");
			}
			//校验邮件实体
			if(!mail.validate()){
				throw new Exception("邮件实体不合法发送失败!");
			}
			sendMailInit();//初始化发送邮件条件
			message.setFrom(new InternetAddress(emailFrom));// 设置发送邮件地址
			message.setSentDate(new Date());// 设置时间
			ArrayList<String> list = mail.getMutliTo();
			InternetAddress[] address = new InternetAddress[list.size()]; // 群发地址
			
			for (int i = 0; i < list.size(); i++) { // 循环发送
				address[i] = new InternetAddress(list.get(i));
			}
			message.setRecipients(Message.RecipientType.TO, address);
			message.setSubject(mail.getTitle());// 设置主题
			
			message.setContent(setMailPart());//设置邮件内容与附件
			message.saveChanges();
			Transport transport = session.getTransport("smtp");
			transport.connect(mailHost, emailUserName, emailPassword);
			transport.sendMessage(message, message.getAllRecipients());
			transport.close();
			return true;
		}catch(Exception e){
			System.out.println("群发邮件发送失败!");
			throw e;
		}
  }
	
	//发送邮件类构造方法需传入一个邮件实体
	public MailSender(MailInstance mail) {
		Config emailPro = Config.getInstance();
		this.setMailHost(emailPro.getValue("emailhost"));
		this.setEmailFrom(emailPro.getValue("emailfrom"));
		this.setEmailUserName(emailPro.getValue("emailusername"));
		this.setEmailPassword(emailPro.getValue("emailpassword"));
		this.mail=mail;
	}
}

Global site tag (gtag.js) - Google Analytics