`
dongliwei122
  • 浏览: 81795 次
  • 性别: 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发送工具类。这个工具类通常包含了处理SMTP(Simple Mail Transfer Protocol)协议、设置邮件头信息、添加附件以及验证用户凭据等功能。下面我们将详细讨论关于Email...

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

    本篇将深入讲解如何使用Apache Commons Email工具类来发送带有验证码的电子邮件。 首先,Apache Commons Email是Apache软件基金会的一个项目,它提供了一组丰富的API,简化了Java中发送电子邮件的过程。这个库包含...

    Java Email工具类

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

    腾讯邮件发送工具类

    【腾讯邮件发送工具类】是基于Java编程语言开发的一个实用工具,主要目的是简化通过腾讯邮箱发送邮件的过程。这个工具类通常包含了一系列方法,用于设置邮件的收件人、主题、正文,以及添加附件等操作。它可能依赖于...

    java Email工具类

    Java Email工具类是Java开发中用于发送电子邮件的实用程序,主要涉及到JavaMail API。这个API提供了处理MIME协议的能力,使开发者能够构建复杂的邮件,包括文本、图片和附件。MIME(Multipurpose Internet Mail ...

    阿里巴巴邮件发送工具类

    使用阿里巴巴邮件发送工具类时,开发者需要在自己的项目中引入这些库文件,并根据`email1688.properties`配置邮件发送的环境。然后,可以通过调用工具类的方法,传入必要的参数(如邮件内容、收件人等),实现邮件的...

    java版发送邮件工具类

    `SendJMail.java`文件很可能是一个已经封装好的邮件发送工具类,它可能包含了设置邮件服务器、发件人、收件人、主题、正文以及附件等功能。此类通常会提供静态方法,开发者只需要传入必要的参数,就可以方便地发送...

    java发送邮件工具类

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

    commos-email邮件发送类

    通过以上介绍,我们可以看出"commos-email邮件发送类"是一个非常实用的工具,能够帮助开发者快速实现邮件发送功能,而无需深入了解底层的SMTP协议细节。在实际项目中,只要根据自身需求配置好邮件发送器,就可以轻松...

    java 发送带模板的邮件工具类

    Java发送带模板的邮件工具类是一种实用的编程实践,它允许开发者通过自定义HTML模板来创建个性化的电子邮件。在Java中,我们可以利用`javax.mail`库来实现这个功能。这个库提供了丰富的API,用于发送、接收和处理...

    commons email 发送html邮件完整优化实例

    Apache Commons Email 是一...总的来说,Apache Commons Email为Java开发者提供了一套强大的工具,使发送HTML邮件变得简单而高效。通过合理地利用其特性,并结合最佳实践,我们可以创建出既美观又功能丰富的邮件服务。

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

    这个"发送多人邮件+多附件工具类"是为了解决这个问题而设计的,它可以帮助开发者便捷地向多个收件人发送带有多个附件的邮件。下面将详细讲解其中涉及的关键知识点。 1. JavaMail API: JavaMail API是Java中用于...

    C#基类工具类

    5. **Email发送**: C#提供了SmtpClient类来处理电子邮件的发送。开发者可以通过配置SMTP服务器信息,设置发件人、收件人、主题和正文,然后使用SmtpClient类发送邮件。还可以添加附件、设置HTML格式的正文等。 6....

    c# Email 邮件发送工具

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

    使用Apache-commons-email发送邮件

    总结一下,Apache Commons Email库为Java开发者提供了方便的邮件发送功能,简化了与SMTP服务器的交互。通过`SendMail.java`文件,我们可以学习到如何使用这个库来创建、配置和发送电子邮件,从而在项目中实现更高效...

    JAVA工具类

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

    PHP发送EMAIL类以及实现方法

    在PHP中,发送电子邮件是一项常见的任务,特别是在网页应用中用于用户注册验证、密码重置等...如果你在网页应用中需要发送电子邮件功能,这个类将是一个方便的工具,只需简单导入并进行配置,即可轻松实现邮件发送。

    发送邮件工具类.rar

    这个名为"发送邮件工具类.rar"的压缩包显然包含了一个Java工具类,用于简化邮件发送过程。下面,我们将深入探讨Java中如何实现邮件发送,以及相关的知识点。 首先,Java提供了JavaMail API来处理邮件发送。这个API...

    java常用的工具类实现

    4. **Email**: 虽然Java标准库没有直接的邮件发送工具类,但可以使用 `javax.mail` 库,它提供了 `Session`、`Message` 和 `Transport` 等类来发送和接收电子邮件。 5. **Page**: 对于分页处理,通常会自定义工具类...

    [其他类别]冰翎email发送类 v1.0_email.zip

    【冰翎Email发送类v1.0】是一个用于在编程环境中发送电子邮件的工具,它简化了邮件发送过程,使得开发者可以快速实现邮件功能。在这个压缩包中,主要包含的是一个或多个与邮件发送相关的文件,可能包括源代码、示例...

Global site tag (gtag.js) - Google Analytics