⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mailmanager.java.svn-base

📁 javamail使用例子
💻 SVN-BASE
字号:
package com.gsta.bimp.modules.mail;

import java.net.URL;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.Properties;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.activation.URLDataSource;
import javax.mail.Address;
import javax.mail.Authenticator;
import javax.mail.BodyPart;
import javax.mail.Message;
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.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.internet.MimeUtility;

import org.apache.log4j.Logger;

/**
 * Title:MailManager.java<br>
 * Description: 邮件发送管理模块<br>
 * Date:2008-3-7<br>
 * 
 * @author :dengwenguang<br>
 * @version 1.0<br>
 */
public class MailManager {
	/**
	 * @param mailContent
	 * @param flag
	 * @return 发送成功标志位
	 */
	// TODO :批量发送邮件
	public int batchSend(MailSender mailSender, MailContent mailContent,
			int flag) {
		Logger logger = Logger.getLogger(this.getClass().getName());
		String host = mailSender.getSmtpHost();
		String from = mailSender.getFromAddress();
		String[] receiverByTO = mailContent.getReceiverByTO();
		receiverByTO = emailAddressFilter(receiverByTO);
		String[] receiverByCC = mailContent.getReceiverByCC();
		receiverByCC = emailAddressFilter(receiverByCC);
		String[] receiverByBCC = mailContent.getReceiverByBCC();
		receiverByBCC = emailAddressFilter(receiverByBCC);
		String[] attachment = mailContent.getAttachment();
		int count = 0;
		Session session = null;
		final String userName = mailSender.getUserName();
		final String password = mailSender.getPassword();
		// Get system properties
		Properties props = System.getProperties();
		// Setup mail server
		props.put("mail.smtp.host", host);
		props.put("mail.smtp.auth", String.valueOf(mailSender
				.getIsAuthentication()));
		if (mailSender.getIsAuthentication()) {
			// Get Session
			session = Session.getDefaultInstance(props, new Authenticator() {
				protected PasswordAuthentication getPasswordAuthentication() {
					return new PasswordAuthentication(userName, password);
				}
			});
		} else {
			session = Session.getDefaultInstance(props, null);
		}
		// Define message
		MimeMessage message = new MimeMessage(session);
		try {
			message.setFrom(new InternetAddress(from));
			if (receiverByTO != null) {
				message.addRecipients(Message.RecipientType.TO,
						string2Address(receiverByTO));
				count = count + receiverByTO.length;
			}
			if (receiverByCC != null) {
				message.addRecipients(Message.RecipientType.CC,
						string2Address(receiverByCC));
				count = count + receiverByCC.length;
			}
			if (receiverByBCC != null) {
				message.addRecipients(Message.RecipientType.BCC,
						string2Address(receiverByBCC));
				count = count + receiverByBCC.length;
			}

			message.setSubject(MimeUtility.encodeText(mailContent.getSubject()));
			MimeMultipart multipart = new MimeMultipart();
			if (mailContent.getIsHtmlMail()) {
				BodyPart msgBodyPart = new MimeBodyPart();
				msgBodyPart.setContent(mailContent.getContent(), "text/html;charset=gb2312");
				multipart.addBodyPart(msgBodyPart);
				if (mailContent.getImageList() != null) {
					for (int i = 0; i < mailContent.getImageList().size(); i++) {
						BodyPart embedImage = new MimeBodyPart();
						DataSource ds = new URLDataSource(new URL(mailContent
								.getImageList().get(i).getImagePath()));
						embedImage.setDataHandler(new DataHandler(ds));
						embedImage.setHeader("Content-ID", "<"
								+ mailContent.getImageList().get(i)
										.getImageId() + ">");
						multipart.addBodyPart(embedImage);
					}
				}
			} else {
				message.setText(mailContent.getContent());
			}
			if (attachment != null) {
				for (int j = 0; j < attachment.length; j++) {
					BodyPart attachmentBodyPart = new MimeBodyPart();
					DataSource source = new FileDataSource(attachment[j]);
					attachmentBodyPart.setDataHandler(new DataHandler(source));
					attachmentBodyPart.setFileName(attachment[j].substring(
							attachment[j].lastIndexOf("/") + 1, attachment[j]
									.length()));
					multipart.addBodyPart(attachmentBodyPart);
				}
			}			
			message.setContent(multipart);
			message.setSentDate(new Date());
			// send message
			Transport.send(message);
		} catch (AddressException e) {
			// TODO Auto-generated catch block
			logger.error("error happen in " + this.getClass().getName(), e);
			e.printStackTrace();
			return 0;
		} catch (MessagingException e) {
			// TODO Auto-generated catch block
			logger.error("error happen in " + this.getClass().getName(), e);
			e.printStackTrace();
			return 0;
		} catch (Exception e) {
			logger.error("error happen in " + this.getClass().getName(), e);
			e.printStackTrace();
			return 0;
		}
		return count;
	}

	/**
	 * 
	 * @description 字符串转换成Address对象
	 * @param strAddress
	 * @return
	 * @hisory created by dengwenguang on 2008-3-26
	 */
	private Address[] string2Address(String[] strAddress) {
		if (strAddress == null) {
			return null;
		}
		Address[] address = new InternetAddress[strAddress.length];
		try {
			for (int i = 0; i < strAddress.length; i++) {
				address[i] = new InternetAddress(strAddress[i]);
			}
		} catch (AddressException e) {
			e.printStackTrace();
			return null;
		}
		return address;
	}

	/**
	 * 
	 * @description 电子邮件地址校验
	 * @param emailAddress
	 * @return
	 * @hisory created by dengwenguang on 2008-3-26
	 */
	private boolean checkEmailAddress(String emailAddress) {

		if (emailAddress != null) {
			String regEx = "\\w+@(\\w+.)+[a-z]{2,3}";
			Pattern pattern = Pattern.compile(regEx);
			Matcher matcher = pattern.matcher(emailAddress);
			return matcher.find();
		} else {
			return false;
		}
	}

	/**
	 * 
	 * @description 非法电子邮件地址过滤
	 * @param addresses
	 * @return
	 * @hisory created by dengwenguang on 2008-3-26
	 */
	private String[] emailAddressFilter(String[] addresses) {
		if (addresses == null) {
			return null;
		}
		List<String> list = new ArrayList();
		for (int j = 0; j < addresses.length; j++) {
			list.add(addresses[j]);
		}
		for (int i = 0; i < list.size(); i++) {
			if (!checkEmailAddress(list.get(i))) {
				list.remove(i);
			}
		}
		addresses = (String[]) list.toArray(new String[list.size()]);
		return addresses;
	}
}

⌨️ 快捷键说明

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