`
dongliwei122
  • 浏览: 79398 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Email发送工具类

    博客分类:
  • Java
阅读更多
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("邮件发送失败");
		}/**/
	}
}
分享到:
评论

相关推荐

    email发送工具类

    email发送工具类

    Java Email工具类

    Java Email工具类 发送邮件,不是很强大

    java版发送邮件工具类

    使用mail.jar封装的万能邮件发送工具类

    Java通过Apache提供的Commons Email工具类实现邮箱发送验证码

    Java通过Apache提供的Commons Email工具类实现邮箱发送验证码功能,代码附详细注释文本,实现方法中附有验证码生成方法

    java发送邮件工具类

    java发送邮件工具类,支持发送文本邮件,及html格式邮件

    c# Email 邮件发送工具

    基于 System.Web.Mail 与 System.Net.Mai 实现的EmailClient,展示了两种不同命名空间下的mail发送区别与使用方式,并提供了统一的帮助类处理邮件发送。 邮件异步发送示例: EmailHelper.SendNetMailAsync(new ...

    JAVA工具类

    EmailUtils - 邮件工具类,支持发送带附件的邮件 encryption AesUtils - 实现AES加密解密 Base64Utils - 实现Base64加密解密 Md5Utils - 获取字符串或文件的md5 excel ReadExcel2003 - 以model方式读2003版Excel...

    C#基类工具类

    C#基类工具类 ,提供IO流处理,正则处理,图片与文件上传下载, 报表生成,email发送,XML json 格式数据序列化等。

    java 发送多人邮件+多附件工具类

    发送多人邮件+多附件工具类,亲测可用,实际项目中已使用,若有疑问,可联系

    EmailUtils.java

    java中的email发送工具类,内提供注释以便于理解方便,对于email内部的修改工作,提供方法sendEmail(String mail,String mailMsg,String subject),发送邮箱的在方法内部固定,有注释,可以随时修改,适用于项目...

    net 实现邮件发送

    net 实现邮件发送工具类,封装的很简单易用。 net 实现邮件发送工具类,封装的很简单易用。 net 实现邮件发送工具类,封装的很简单易用。 net 实现邮件发送工具类,封装的很简单易用。

    用java实现邮箱发送的通用工具类

    该工具类是用java实现邮箱发送功能的工具类,有了该类,你只需调用其中的方法,传入邮箱地址、邮件主题、邮件内容即可,十分方便,可以自行更改里边的设置。

    JAVA语言中发送邮件超详细工具类

    JAVA语言中发送邮件超详细工具类,填写发送着邮箱信息即可发送。

    Android-一个Android下发送Email的库

    一个Android 下发送Email的库

    QQ登录,微信登录,发送email,发送短信

    小工具类:1)登录操作需要在QQ互联或微信开放平台(非公众平台,认证一次要花钱的)上申请,补充配置中的key等值;2)发送email,建议使用企业邮箱,个人邮箱可能需要开始smtp服务,自己百度吧;3)发送短信我用的...

    JAVA EMAIL发送

    2.封装成工具类,采用线程池,分别实现RUNNABLE和CALLABLE,建议采用CALLABLE发送 3.能够批量发送,对发送失败的地址进行判断过滤,再发送,直至成功 4.提供TEST调用DEMO 5.有README说明各个类以及配置

    java邮件发送工具代码.zip

    java语言的邮件发送工具代码,自己写的工具类含抄送,密送,邮件附件功能,简单易懂,简单配置直接使用

    java spring 整合 email + quartz

    maven工程,使用spring 整合quartz,增加email发送的工具类,修改一下数据库,即可直接使用,里面有一个真实业务demo,可按照该格式进行模块化开发

    利用javamail api实现的邮件发送类

    利用JavaMail API来发送Email的工具类 支持单发,群发及无限制数量的附件功能,并同时支持简单邮件和HTML两种格式的邮件内容 支持抄送,密送功能 具体使用参见其mail方法的使用示例

    sendEmailTest.rar

    Java开发的后台发送单个或多个邮件的工具类,该类稳定性好,邮件发送后不会被当做垃圾邮件拦截,因此我在这里给大家分享一下。

Global site tag (gtag.js) - Google Analytics