Java邮件工具类

首先封装邮件实体,协议采用SMTP:

import java.util.List;

import javax.mail.internet.InternetAddress;

/**
 * 邮箱实体类
 * @author Administrator
 *
 */
public class EmailInfo {
	// 邮箱对应SMTP的服务器的地址
	private String smtpHost;
	// 邮箱的用户名
	private String user;
	private String password;

	// 邮件主题
	private String subject;
	// 邮件内容(可以在字符串中插入html标记)
	private String content;
	// 邮件内容的编码(默认可为空)
	private String charset = "text/html;charset=UTF-8";
	// 接收邮件的对象的邮箱地址
	private List<InternetAddress> receiveEmailAddress;
	// 抄送邮件的对象的地址
	private List<InternetAddress> ccEmailAddress;

	public EmailInfo() {
		super();
	}

	public EmailInfo(String smtpHost, String user, String password, String subject, String content, List<InternetAddress> receiveEmailAddress) {
		super();
		this.smtpHost = smtpHost;
		this.user = user;
		this.password = password;
		this.subject = subject;
		this.content = content;
		this.receiveEmailAddress = receiveEmailAddress;
	}

	public String getSmtpHost() {
		return smtpHost;
	}

	public void setSmtpHost(String smtpHost) {
		this.smtpHost = smtpHost;
	}

	public String getUser() {
		return user;
	}

	public void setUser(String user) {
		this.user = user;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public String getSubject() {
		return subject;
	}

	public void setSubject(String subject) {
		this.subject = subject;
	}

	public String getContent() {
		return content;
	}

	public void setContent(String content) {
		this.content = content;
	}

	public List<InternetAddress> getReceiveEmailAddress() {
		return receiveEmailAddress;
	}

	public void setReceiveEmailAddress(List<InternetAddress> receiveEmailAddress) {
		this.receiveEmailAddress = receiveEmailAddress;
	}

	public String getCharset() {
		return charset;
	}

	public void setCharset(String charset) {
		this.charset = charset;
	}

	public List<InternetAddress> getCcEmailAddress() {
		return ccEmailAddress;
	}

	public void setCcEmailAddress(List<InternetAddress> ccEmailAddress) {
		this.ccEmailAddress = ccEmailAddress;
	}
}

然后封装工具方法类:

import java.util.ArrayList;
import java.util.List;
import java.util.Properties;

import javax.mail.Authenticator;
import javax.mail.Message.RecipientType;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

import org.apache.log4j.Logger;

import com.safety.pub.common.Common;

import edu.emory.mathcs.backport.java.util.Arrays;

/**
 * 邮件操作公共类
 * @author Administrator
 *
 */
public class EmailUtils {
	public static Logger log = Logger.getLogger(EmailUtils.class);
	/**
	 * 发送邮件
	 * @param email
	 * @throws MessagingException
	 */
	public static void sendEmail(EmailInfo email) throws MessagingException {
		final Properties props = generateProp(email);
		Session mailSession = generateSession(props);
		MimeMessage message = new MimeMessage(mailSession);
		InternetAddress from = new InternetAddress(props.getProperty("mail.user"));
		message.setFrom(from);
		List<InternetAddress> list = email.getReceiveEmailAddress();
		if(!Common.isEmpty(list)) {
			InternetAddress[] to = list.toArray(new InternetAddress[]{});
			log.debug("发送邮件的地址为:" + Arrays.toString(to));
			message.setRecipients(RecipientType.TO, to);
			List<InternetAddress> ccList = email.getCcEmailAddress();
			if(!Common.isEmpty(ccList)) {
				InternetAddress[] cc = ccList.toArray(new InternetAddress[]{});
				log.debug("抄送邮件的地址为:" + Arrays.toString(cc));
				message.setRecipients(RecipientType.CC, cc);
			}
			log.debug("发送邮件的主题为:" + email.getSubject());
			message.setSubject(email.getSubject());
			log.debug("发送邮件的内容体为:" + email.getContent());
			message.setContent(email.getContent(), email.getCharset());
			Transport.send(message);
		}
	}

	private static Session generateSession(final Properties props) {
		return Session.getInstance(props, new Authenticator() {
			@Override
			protected PasswordAuthentication getPasswordAuthentication() {
				// 用户名、密码
				String userName = props.getProperty("mail.user");
				String password = props.getProperty("mail.password");
				return new PasswordAuthentication(userName, password);
			}
		});
	}

	private static Properties generateProp(EmailInfo email) {
		final Properties prop = new Properties();
		// 表示SMTP发送邮件,需要进行身份验证
		prop.put("mail.smtp.auth", "true");
		prop.put("mail.smtp.host", email.getSmtpHost());
		prop.put("mail.user", email.getUser());
		prop.put("mail.password", email.getPassword());
		return prop;
	}

	//测试是否能够成功发送
	public static void main(String[] args) throws MessagingException {
		String smtpHost="smtp.163.com";
        String user="[email protected]";
        String password="chnashxbjkbnzxqg";
		String subject="测试111";
		String content="测试发送邮件";
		InternetAddress to = new InternetAddress("[email protected]");
		ArrayList<InternetAddress> receiveEmailAddress=new ArrayList<InternetAddress> ();
		receiveEmailAddress.add(to);
		EmailInfo email =new EmailInfo(smtpHost,user,password,subject,content,receiveEmailAddress);
		sendEmail(email);
	}
}
时间: 2024-11-04 01:52:48

Java邮件工具类的相关文章

01_JavaMail_05_创建邮件工具类MailUtils等方便发送邮件

[工程截图] [代码实现] [Mail.java] package com.Higgin.Utils; import java.util.ArrayList; import java.util.List; /** * 表示邮件类,你需要设置:账户名和密码.收件人.抄送(可选).暗送(可选).主题.内容,以及附件(可选) * * 在创建了Mail对象之后 * 可以调用它的setSubject().setContent(),设置主题和正文 * 也可以调用setFrom()和 addToAddress

Java常用工具类集合

数据库连接工具类 仅仅获得连接对象 ConnDB.java package com.util; import java.sql.Connection; import java.sql.DriverManager; /** * 数据库连接工具类——仅仅获得连接对象 * */ public class ConnDB { private static Connection conn = null; private static final String DRIVER_NAME = "com.mysql

Java 数组工具类排序,最大值最小值等

public class ArrayUtils{ /** * 返回数组最大值 * * @param a * @return */ public static int max(int[] a){ // 返回数组最大值 int x; int aa[]=new int[a.length]; System.arraycopy(a,0,aa,0,a.length); x=aa[0]; for(int i=1;i<aa.length;i++){ if(aa[i]>x){ x=aa[i]; } } retu

新版本Java邮件发送类

之前曾经做过几个邮件发送类,有兴趣可以查阅前面的帖子. 使用过程中,发现一些不便之处,并作出了改进,将改进后的版本发布如下: 基类及其附属类共三个:(下载地址:http://pan.baidu.com/s/1bn1VkUN) import java.io.File; import java.util.Date; import java.util.List; import java.util.Properties; import javax.activation.DataHandler; impo

java流工具类使用很方便

package com.auto.generate.utils ; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; /** * File Name: StreamTool.jav

java常用工具类(java技术交流群57388149)

package com.itjh.javaUtil; import java.util.ArrayList; import java.util.List; /** * * String工具类. <br> * * @author 宋立君 * @date 2014年06月24日 */ public class StringUtil { private static final int INDEX_NOT_FOUND = -1; private static final String EMPTY =

黑马程序员——Java集合工具类和泛型

Collections工具类和泛型 Collections和Collection Collections和Collection是不同的,Collections是工具类,用来操作集合的,而Collection是集合接口.Collections中有一系列的静态方法用来操作集合,但是不能更改集合内容.比如不能set()不能remove()元素,可以替换全部元素或者添加同一个元素. static List<String> list =Arrays .asList("one Two three

UrlUtils工具类,Java URL工具类,Java URL链接工具类

UrlUtils工具类,Java URL工具类,Java URL链接工具类 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ?Copyright 蕃薯耀 2017年7月15日 http://www.cnblogs.com/fanshuyao/ Java代码   import java.util.Ha

Java日期工具类,Java时间工具类,Java时间格式化

Java日期工具类,Java时间工具类,Java时间格式化 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ?Copyright  蕃薯耀 2017年2月4日 15:03:27 星期六 http://www.cnblogs.co