|
package com.hexun.blog.dongliwei.common.mail;import java.io.UnsupportedEncodingException;import java.sql.Connection;import java.util.ArrayList;import java.util.Date;import java.util.Properties;import javax.mail.Address;import javax.mail.Message;import javax.mail.MessagingException;import javax.mail.NoSuchProviderException;import javax.mail.Session;import javax.mail.Transport;import javax.mail.internet.AddressException;import javax.mail.internet.InternetAddress;import javax.mail.internet.MimeMessage;import javax.mail.internet.MimeUtility;import org.apache.commons.mail.EmailAttachment;import org.apache.commons.mail.EmailException;import org.apache.commons.mail.HtmlEmail;import org.apache.commons.mail.MultiPartEmail;import org.apache.commons.mail.SimpleEmail;/** *文件名:DMail.java<br> *@author 董利伟<br> *版本:<br> *描述:E-Mail发送工具类<br> *创建时间:2008-2-28 下午04:37:40<br> *文件描述:<br> *修改者:<br> *修改日期:<br> *修改描述:<br> */public class DMail {/** * 发送简单的email,不能添加附件 */public static final int SIMPLEEMAIL = 1;/** * 文本邮件,可以添加多个附件 */public static final int MULTIPARTEMAIL = 2;/** * HTML格式邮件,同时具有MultiPartEmail类所有“功能” */public static final int HTMLEMAIL = 3;/** * 发件人的地址 */private String from_address = "";/** * 邮件标题 */private String title = "";/** * 邮件内容 */private String text = "";/** * 发送邮件服务器的信息 */private String mail_smtp_host = "";/** * 发件人用户名 */private String username = "";/** * 发件人密码 */private String passwod = "";/** * mail发送方式 */private int mail_type = 1;/** * 邮件附件列表 */private ArrayList accessoriesList = new ArrayList();/** * 发送地址列表 */private ArrayList to_addressList = new ArrayList();/** * 抄送地址列表 */private ArrayList cc_to_addressList = new ArrayList();/** * 密送地址列表 */private ArrayList bcc_to_addressList = new ArrayList();/** * 获取发件人的地址 * @return */private String getFrom_address() {return from_address;}/** * 设置发件人的地址 * @param from_address */public void setFrom_address(String from_address) {this.from_address = from_address;}/** * 获取smtp host主机地址 * @return */private String getMail_smtp_host() {return mail_smtp_host;}/** * 设置smtp host主机地址 * @param mail_smtp_host */public void setMail_smtp_host(String mail_smtp_host) {this.mail_smtp_host = mail_smtp_host;}/** * 获取发件人密码 * @return */private String getPasswod() {return passwod;}/** * 设置发件人密码 * @param passwod */public void setPasswod(String passwod) {this.passwod = passwod;}/** * 获取邮件内容 * @return */private String getText() {return text;}/** * 设置邮件内容(支持HTML) * @param text */public void setText(String text) {this.text = text;}/** * 获取邮件标题 * @return */private String getTitle() {return title;}/** * 设置邮件标题(主题) * @param title */public void setTitle(String title) {this.title = title;}/** * 获取发件人用户名 * @return */private String getUsername() {return username;}/** * 设置发件人用户名 * @param username */public void setUsername(String username) {this.username = username;}/** * 添加附件 * @param path */public void AddAccessories(String path){EmailAttachment attachment = new EmailAttachment();attachment.setPath(path);attachment.setDisposition(EmailAttachment.ATTACHMENT);//文件描述attachment.setDescription("venustech");try {attachment.setName(MimeUtility.encodeText(path.substring(path.lastIndexOf("/")+1)));//解决中文字符问题} catch (UnsupportedEncodingException e) {e.printStackTrace();}this.accessoriesList.add(attachment);}/** * 添加发送地址 * @param path */public void Add_To_addressList(String path){String[] p = path.split(";");for(int i = 0 ; i < p.length;i++){if(p[i].equals("")){continue;}to_addressList.add(p[i]);}}/** * 添加抄送地址 * @param path */public void Add_Cc_To_addressList(String path){String[] p = path.split(";");for(int i = 0 ; i < p.length;i++){if(p[i].equals("")){continue;}cc_to_addressList.add(p[i]);}}/** * 添加密送地址 * @param path */public void Add_Bcc_To_addressList(String path){String[] p = path.split(";");for(int i = 0 ; i < p.length;i++){if(p[i].equals("")){continue;}bcc_to_addressList.add(p[i]);}}/** * 发送HTML格式邮件,可以添加多个附件 * @return */private boolean sendHtmlEMail(){try {HtmlEmail email = new HtmlEmail();//smtp host email.setHostName(getMail_smtp_host());email.setCharset("UTF-8");//登陆邮件服务器的用户名和密码email.setAuthentication(getUsername(),getPasswod());//接收人//email.addTo(getTo_address(),getFrom_nickname());for(int i = 0 ; i < to_addressList.size();i++){email.addTo(((String)to_addressList.get(i)),((String)to_addressList.get(i)));}//抄送for(int i = 0 ; i < cc_to_addressList.size();i++){email.addCc(((String)cc_to_addressList.get(i)),((String)cc_to_addressList.get(i)));}//密送for(int i = 0 ; i < bcc_to_addressList.size();i++){email.addBcc(((String)bcc_to_addressList.get(i)),((String)bcc_to_addressList.get(i)));}//发送人email.setFrom(getFrom_address(),getFrom_address());//标题email.setSubject(getTitle());//邮件内容email.setHtmlMsg(getText());//添加附件(附件,可以定义多个附件对象)for(int i = 0; i < this.accessoriesList.size();i++){EmailAttachment attachment = (EmailAttachment)this.accessoriesList.get(i);email.attach(attachment);}//发送email.send();} catch (EmailException e) {return false;} return true;}/** * 发送文本邮件,可以添加多个附件 * @return */private boolean sendMultipartEMail(){try {MultiPartEmail email = new MultiPartEmail();//smtp host email.setHostName(getMail_smtp_host());email.setCharset("UTF-8");//登陆邮件服务器的用户名和密码email.setAuthentication(getUsername(),getPasswod());//接收人//email.addTo(getTo_address(),getFrom_nickname());for(int i = 0 ; i < to_addressList.size();i++){email.addTo(((String)to_addressList.get(i)),((String)to_addressList.get(i)));}//抄送for(int i = 0 ; i < cc_to_addressList.size();i++){email.addCc(((String)cc_to_addressList.get(i)),((String)cc_to_addressList.get(i)));}//密送for(int i = 0 ; i < bcc_to_addressList.size();i++){email.addBcc(((String)bcc_to_addressList.get(i)),((String)bcc_to_addressList.get(i)));}//发送人email.setFrom(getFrom_address(),getFrom_address());//标题email.setSubject(getTitle());//邮件内容email.setMsg(getText());//添加附件(附件,可以定义多个附件对象)for(int i = 0; i < this.accessoriesList.size();i++){EmailAttachment attachment = (EmailAttachment)this.accessoriesList.get(i);email.attach(attachment);}//发送email.send();} catch (EmailException e) {return false;}return true;}/** * 发送简单邮件 * @return */private boolean sendSimpleEMail(){SimpleEmail email = new SimpleEmail();//smtp host email.setHostName(getMail_smtp_host());email.setCharset("UTF-8");//登陆邮件服务器的用户名和密码try {email.setAuthentication(getUsername(),getPasswod());//接收人//email.addTo(getTo_address(),getFrom_nickname());for(int i = 0 ; i < to_addressList.size();i++){email.addTo(((String)to_addressList.get(i)),((String)to_addressList.get(i)));}//抄送for(int i = 0 ; i < cc_to_addressList.size();i++){email.addCc(((String)cc_to_addressList.get(i)),((String)cc_to_addressList.get(i)));}//密送for(int i = 0 ; i < bcc_to_addressList.size();i++){email.addBcc(((String)bcc_to_addressList.get(i)),((String)bcc_to_addressList.get(i)));}//发送人email.setFrom(getFrom_address(),getFrom_address());//标题email.setSubject(getTitle());//邮件内容email.setMsg(getText());//发送email.send();} catch (EmailException e) {e.printStackTrace();return false;}return true;}/** * 发送邮件 * @return */public boolean sendEMail(){boolean result = false;if(this.getMail_type() == this.SIMPLEEMAIL){result = sendSimpleEMail();}else if(this.getMail_type() == this.MULTIPARTEMAIL){result = sendMultipartEMail();}else{result = sendHtmlEMail();}return result;}/** * 获取邮件发送类型 * @return */public int getMail_type() {return mail_type;}/** * 设置邮件发送类型 * @param mail_type */public void setMail_type(int mail_type) {this.mail_type = mail_type;}/** * 发送邮件的例子 * @param args */public static void main(String [] args){//DMail dmail = new DMail();///**///dmail.setFrom_address("发件人地址");//完整邮箱//dmail.Add_To_addressList("收件人地址(列表)");//收件人邮箱地址(多个地址以;分割)//dmail.Add_Cc_To_addressList("抄送地址(列表)");//dmail.Add_Bcc_To_addressList("密送地址(列表)");//dmail.setTitle("邮件的标题信息");//dmail.setText("邮件内容");//dmail.setMail_smtp_host("smtp服务器地址");//dmail.setUsername("用户名");//dmail.setPasswod("密码");///**///////简单邮件发送方式//dmail.setMail_type(DMail.SIMPLEEMAIL);//if(dmail.sendEMail()){//System.out.println("邮件发送成功");//}else{//System.out.println("邮件发送失败");//}/**发送带附件的邮件**dmail.setMail_type(DMail.MULTIPARTEMAIL);dmail.AddAccessories("c://response.txt");dmail.AddAccessories("c://12.txt");if(dmail.sendEMail()){System.out.println("邮件发送成功");}else{System.out.println("邮件发送失败");}/**/}} |
|