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;
}
}
|