mailbox.java

来自「基于Sturts+Spring+Hibernate的一个高级销售管理系统。内容丰」· Java 代码 · 共 310 行

JAVA
310
字号
package com.yuanchung.sales.util.emailutil;

import java.io.IOException;
import java.util.Date;
import java.util.Enumeration;
import java.util.Properties;
import java.util.Vector;

import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.AuthenticationFailedException;
import javax.mail.Message;
import javax.mail.MessagingException;
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 org.apache.log4j.Logger;

/**
 * 
 * @author 福建圆创软件;
 * @function 构造邮箱工具类;
 */
public class MailBox {

	private static Logger logger = Logger.getLogger(MailBox.class);// 记载日志

	private String mailTo = null;// 邮件接受者;
	private String mailFrom = null;// 邮件发送者
	private String smtpHost = null;// 邮件服务器地址;

	private boolean debug = false;// 是否采用调试方式
	private String messageBasePath = null;

	private String subject = null;// 邮件主题;

	/** 邮件内容* */
	private String msgContent;// 邮件主题内容;
	private String messageContentMimeType = "text/html; charset=utf-8";// 设置邮件类型和编码;
	private Vector attachedFileList;// 附件列表;
	private String mailAccount = null;// 邮件数量;
	private String mailPass = null;
	private String mailbccTo = null;// 接受者b--发送副本给附加人b;
	private String mailccTo = null;// 接受者c--发送副本给附加人c;s

	// 构造函数;
	public MailBox() {
		super();
	}

	// 实例化方法;
	public void init() {

	}

	/**
	 * @author 福建圆创软件;
	 * @function 封装邮件,把必要的信息装载进邮件;
	 * @param session
	 *            在邮件发送中的会话
	 * @param msg
	 *            邮件对象;
	 * @throws IOException
	 *             输入输出流异常;
	 * @throws MessagingException
	 *             邮件异常;
	 */
	private void fillMail(Session session, MimeMessage msg) throws IOException,
			MessagingException {

		String fileName = null;
		Multipart mPart = new MimeMultipart();
		
		/**判断发件人是否为空**/
		if (mailFrom != null) {
			msg.setFrom(new InternetAddress(mailFrom));
			logger.debug("发送人Mail地址:" + mailFrom);
		} else {
			logger.debug("没有指定发送人邮件地址!");
			return;
		}

		
		/**判断收件人是否为空**/
		if (mailTo != null) {
			InternetAddress[] address = InternetAddress.parse(mailTo);
			msg.setRecipients(Message.RecipientType.TO, address);
			logger.debug("收件人Mail地址:" + mailTo);
		} else {
			logger.debug("没有指定收件人邮件地址!");
			return;
		}

		/**邮件附加收件人c是否为空**/
		if (mailccTo != null) {
			InternetAddress[] ccaddress = InternetAddress.parse(mailccTo);
			logger.debug("CCMail地址:" + mailccTo);
			msg.setRecipients(Message.RecipientType.CC, ccaddress);
		}

		/**邮件附加收件人b是否为空**/
		if (mailbccTo != null) {
			InternetAddress[] bccaddress = InternetAddress.parse(mailbccTo);
			logger.debug("BCCMail地址:" + mailbccTo);
			msg.setRecipients(Message.RecipientType.BCC, bccaddress);

		}
		
		msg.setSubject(subject);//设置主题
		InternetAddress[] replyAddress = { new InternetAddress(mailFrom) };//设置回信地址;
		msg.setReplyTo(replyAddress);//传入回信地址位置;


		MimeBodyPart mBodyContent = new MimeBodyPart();//设置邮件主体部分;
		
		/**判断邮件主体是否为空**/
		if (msgContent != null)//如果内容不为空;
			mBodyContent.setContent(msgContent, messageContentMimeType);//设置主体的编码;
		else{
			mBodyContent.setContent("", messageContentMimeType);
		}
		
		mPart.addBodyPart(mBodyContent);//总体部分加入主体部分;


		/**附件位置s**/
		if (attachedFileList != null) {
			for (Enumeration fileList = attachedFileList.elements(); fileList
					.hasMoreElements();) {
				fileName = (String) fileList.nextElement();
				MimeBodyPart mBodyPart = new MimeBodyPart();
				FileDataSource fds = new FileDataSource(messageBasePath
						+ fileName);
				logger.debug("Mail发送的附件为:" + messageBasePath + fileName);
				mBodyPart.setDataHandler(new DataHandler(fds));
				mBodyPart.setFileName(fileName);
				mPart.addBodyPart(mBodyPart);
			}
		}

		msg.setContent(mPart);//邮件加入总体部分;
		msg.setSentDate(new Date());//发送时间

	}

	/**
	 * @author 福建圆创软件;
	 * @function 发送邮件;
	 * @return 返回类型为int,1为成功,3为失败;
	 * @throws IOException
	 * @throws MessagingException
	 */
	public int sendMail() throws IOException, MessagingException {

		int loopCount;
		Properties props = System.getProperties();
		props.put("mail.smtp.host", smtpHost);
		props.put("mail.smtp.auth", "true");
		MailAuthenticator auth = new MailAuthenticator();
		Session session = Session.getInstance(props, auth);
		session.setDebug(debug);
		MimeMessage msg = new MimeMessage(session);
		Transport trans = null;
		try {
			fillMail(session, msg);
			trans = session.getTransport("smtp");
			try {
				trans.connect(smtpHost, MailAuthenticator.LU_MAIL_USER,
						MailAuthenticator.LU_MAIL_PASSWORD);
			} catch (AuthenticationFailedException e) {
				e.printStackTrace();
				logger.debug("连接邮件服务器错误:");
				return 3;
			} catch (MessagingException e) {
				logger.debug("连接邮件服务器错误:");
				return 3;
			}
			trans.send(msg);
			trans.close();
		} catch (MessagingException mex) {
			logger.debug("发送邮件失败:");
			mex.printStackTrace();
			Exception ex = null;
			if ((ex = mex.getNextException()) != null) {
				System.out.println(ex.toString());
				ex.printStackTrace();
			}
			return 3;
		} finally {
			try {
				if (trans != null && trans.isConnected())
					trans.close();
			} catch (Exception e) {
				System.out.println(e.toString());
			}
		}
		logger.debug("发送邮件成功!");
		return 0;
	}

	public String getMailTo() {
		return mailTo;
	}

	public void setMailTo(String mailTo) {
		this.mailTo = mailTo;
	}

	public String getMailFrom() {
		return mailFrom;
	}

	public void setMailFrom(String mailFrom) {
		this.mailFrom = mailFrom;
	}

	public String getSmtpHost() {
		return smtpHost;
	}

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

	public boolean isDebug() {
		return debug;
	}

	public void setDebug(boolean debug) {
		this.debug = debug;
	}

	public String getMessageBasePath() {
		return messageBasePath;
	}

	public void setMessageBasePath(String messageBasePath) {
		this.messageBasePath = messageBasePath;
	}

	public String getSubject() {
		return subject;
	}

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

	public String getMsgContent() {
		return msgContent;
	}

	public void setMsgContent(String msgContent) {
		this.msgContent = msgContent;
	}

	public String getMessageContentMimeType() {
		return messageContentMimeType;
	}

	public void setMessageContentMimeType(String messageContentMimeType) {
		this.messageContentMimeType = messageContentMimeType;
	}

	public Vector getAttachedFileList() {
		return attachedFileList;
	}

	public void setAttachedFileList(Vector attachedFileList) {
		this.attachedFileList = attachedFileList;
	}

	public String getMailAccount() {
		return mailAccount;
	}

	public void setMailAccount(String mailAccount) {
		this.mailAccount = mailAccount;
	}

	public String getMailPass() {
		return mailPass;
	}

	public void setMailPass(String mailPass) {
		this.mailPass = mailPass;
	}

	public String getMailbccTo() {
		return mailbccTo;
	}

	public void setMailbccTo(String mailbccTo) {
		this.mailbccTo = mailbccTo;
	}

	public String getMailccTo() {
		return mailccTo;
	}

	public void setMailccTo(String mailccTo) {
		this.mailccTo = mailccTo;
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?