亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

EmailUtil工具類

張軍 5166 0

所有工具類

本文章向大家介紹EmailUtil,主要包括EmailUtil使用實例、應用技巧、基本知識點總結和需要注意事項,具有一定的參考價值,需要的朋友可以參考一下。

package zj.email.util;

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

import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Address;
import javax.mail.BodyPart;
import javax.mail.Message;
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 javax.mail.internet.MimeUtility;

import org.apache.log4j.Logger;

import zj.check.util.CheckUtil;
import zj.common.exception.ServiceException;
import zj.email.bean.EmailDto;
import zj.java.util.JavaUtil;

/**
 * 概況 :EmailUtil工具類<br>
 * 
 * @version 1.00 (2011.12.02)
 * @author SHNKCS 張軍 {@link <a target=_blank href="http://m.eyofj.com">張軍個人網(wǎng)站</a>&nbsp;&nbsp;&nbsp;&nbsp;<a target=_blank href="http://user.qzone.qq.com/360901061/">張軍QQ空間</a>} <br>
 */
public class EmailUtil {
	private static Logger logger = Logger.getLogger(EmailUtil.class);

	/**
	 * 發(fā)送郵件
	 * 
	 * @param dto
	 */
	public static boolean sendEmail(EmailDto dto) {
		try {
			Properties props = new Properties();
			props.put("mail.smtp.host", dto.getMailSmtpHost());
			props.put("mail.smtp.auth", "true");
			// 使用 STARTTLS安全連接:
			// props.setProperty("mail.smtp.port", "465");
			// props.setProperty("mail.smtp.starttls.enable", "true");
			// props.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
			// props.setProperty("mail.smtp.socketFactory.fallback", "false");
			if (dto.getPropertiesMap() != null && dto.getPropertiesMap().size() > 0) {
				props.putAll(dto.getPropertiesMap());
			}
			// 郵件會話類Session,跟httpSession類似。傳入屬性設置properties和授權驗證對象
			Session session = null;
			// 無授權驗證
			session = Session.getInstance(props);
			// 授權驗證
			// SmtpAuth auth = new SmtpAuth();
			// auth.setUser(dto.getUser());
			// auth.setPassword(dto.getPassword());
			// session = Session.getInstance(props, auth);

			session.setDebug(dto.isDebug());
			// 由郵件會話新建一個消息對象
			MimeMessage message = new MimeMessage(session);
			InternetAddress from = new InternetAddress(dto.getFromAddress());
			// 設置發(fā)信人
			message.setFrom(from);
			// 設置收信人
			if (CheckUtil.isNotNull(dto.getToAddresses())) {
				String[] sary = JavaUtil.split(dto.getToAddresses(), ";");
				List<String> emails = new ArrayList<String>();
				for (int i = 0; i < sary.length; i++) {
					if (CheckUtil.isEmail(sary[i])) {
						emails.add(sary[i]);
					} else {
						logger.warn("無效的收件人郵件地址:" + sary[i]);
					}
				}
				if (emails.size() > 0) {
					Address[] addressAry = new InternetAddress[emails.size()];
					for (int i = 0; i < emails.size(); i++) {
						String email = emails.get(i);
						addressAry[i] = new InternetAddress(email);
					}
					message.setRecipients(Message.RecipientType.TO, addressAry);
				} else {
					throw new ServiceException("驗證所有收件人失敗,收件人至少有一個人");
				}
			} else {
				throw new ServiceException("收件人至少有一個人");
			}
			// 設置抄送人
			if (CheckUtil.isNotNull(dto.getCcAddresses())) {
				String[] sary = JavaUtil.split(dto.getCcAddresses(), ";");
				List<String> emails = new ArrayList<String>();
				for (int i = 0; i < sary.length; i++) {
					if (CheckUtil.isEmail(sary[i])) {
						emails.add(sary[i]);
					} else {
						logger.warn("無效的抄送人郵件地址:" + sary[i]);
					}
				}
				if (emails.size() > 0) {
					Address[] addressAry = new InternetAddress[emails.size()];
					for (int i = 0; i < emails.size(); i++) {
						String email = emails.get(i);
						addressAry[i] = new InternetAddress(email);
					}
					message.setRecipients(Message.RecipientType.CC, addressAry);
				}
			}
			// 設置密送人
			if (CheckUtil.isNotNull(dto.getBccAddresses())) {
				String[] sary = JavaUtil.split(dto.getBccAddresses(), ";");
				List<String> emails = new ArrayList<String>();
				for (int i = 0; i < sary.length; i++) {
					if (CheckUtil.isEmail(sary[i])) {
						emails.add(sary[i]);
					} else {
						logger.warn("無效的密送人郵件地址:" + sary[i]);
					}
				}
				if (emails.size() > 0) {
					Address[] addressAry = new InternetAddress[emails.size()];
					for (int i = 0; i < emails.size(); i++) {
						String email = emails.get(i);
						addressAry[i] = new InternetAddress(email);
					}
					message.setRecipients(Message.RecipientType.BCC, addressAry);
				}
			}
			// 設置主題
			message.setSubject(dto.getSubject());
			// 設置發(fā)信時間
			message.setSentDate(new Date());
			// 發(fā)送郵件
			Multipart mm = new MimeMultipart();
			if (dto.getContentObj() == null) {
				dto.setContentObj("");
			}
			BodyPart mdpContent = new MimeBodyPart();
			// 添加內(nèi)容
			mdpContent.setContent(dto.getContentObj(), dto.getContentType());
			mm.addBodyPart(mdpContent);
			// 添加附件
			if (CheckUtil.isNotNull(dto.getFileDataSources())) {
				String[] sary = JavaUtil.split(dto.getFileDataSources(), ";");
				String[] saryName = JavaUtil.split(dto.getFileDataSourcesName(), ";");
				for (int i = 0; i < sary.length; i++) {
					FileDataSource fdsFile = new FileDataSource(sary[i]);
					DataHandler dh = new DataHandler(fdsFile);
					BodyPart mdpAttachment = new MimeBodyPart();
					String fileName = null;
					if (saryName.length > i) {
						fileName = saryName[i];
					}
					if (CheckUtil.isNull(fileName)) {
						fileName = fdsFile.getName();
					}
					mdpAttachment.setFileName(MimeUtility.encodeWord(fileName));
					mdpAttachment.setDataHandler(dh);
					mm.addBodyPart(mdpAttachment);
				}
			}
			message.setContent(mm);
			// 保存改變
			message.saveChanges();
			// ****************************************************//
			Transport transport = session.getTransport(dto.getProtocol());
			// 以smtp方式登錄郵箱,第一個參數(shù)是發(fā)送郵件用的郵件服務器SMTP地址,第二個參數(shù)為用戶名,第三個參數(shù)密碼
			transport.connect(dto.getMailSmtpHost(), dto.getUser(), dto.getPassword());
			// 發(fā)送郵件,其中第二個參數(shù)是所有已設好的收件人地址
			transport.sendMessage(message, message.getAllRecipients());
			transport.close();
			logger.info("發(fā)送郵件成功");
			return true;
		} catch (Exception e) {
			throw new ServiceException(e);
		}
	}
}

email工具類參數(shù)

package zj.email.bean;

import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;

import lombok.Data;
import zj.check.util.CheckUtil;
import zj.java.util.JavaUtil;

/**
 * email工具類參數(shù)<br>
 * 
 * @version 1.00 (2011/11/08)
 * @author 張軍 {@link  <a target=_blank href="http://m.eyofj.com">張軍個人網(wǎng)站</a>&nbsp;&nbsp;&nbsp;&nbsp;<a target=_blank href="http://user.qzone.qq.com/360901061/">張軍QQ空間</a>}
 */
@Data
public class EmailDto implements Serializable {

	private static final long serialVersionUID = 1L;

	/**
	 * 發(fā)件人使用發(fā)郵件的電子信箱服務器,默認smtp.126.com
	 */
	private String mailSmtpHost;
	/**
	 * 是否調(diào)試
	 */
	private boolean debug;
	/**
	 * 發(fā)送人郵箱地址
	 */
	private String fromAddress;
	/**
	 * 收件人郵箱地址(多個以;號隔開)
	 */
	private String toAddresses;
	/**
	 * 密送人郵箱地址(多個以;號隔開)
	 */
	private String bccAddresses;
	/**
	 * 抄送人郵箱地址(多個以;號隔開)
	 */
	private String ccAddresses;
	/**
	 * 設置主題
	 */
	private String subject;
	/**
	 * 發(fā)送主體內(nèi)容
	 */
	private Object contentObj;
	/**
	 * 編碼,默認text/html;charset=UTF-8
	 */
	private String contentType = "text/html;charset=UTF-8";
	/**
	 * 附件地址
	 */
	private String fileDataSources;
	/**
	 * 附件地址名
	 */
	private String fileDataSourcesName;
	/**
	 * 協(xié)議,默認smtp
	 */
	private String protocol = "smtp";
	/**
	 * 發(fā)送郵件用戶名
	 */
	private String user;
	/**
	 * 發(fā)送郵件密碼
	 */
	private String password;
	// 屬性設置
	private Map<String, Object> propertiesMap = new HashMap<String, Object>();
	/**
	 * 是否465端口發(fā)送
	 */
	private boolean send465Port;

	/**
	 * 自動設置用戶名
	 */
	public void autoSetUser() {
		if (CheckUtil.isNull(user)) {
			// 設置用戶名
			String[] userAry = JavaUtil.split(this.fromAddress, "@");
			if (userAry.length > 0) {
				user = userAry[0];
			}
		}
	}

	/**
	 * 改成465端口發(fā)送
	 */
	private void send465Port() {
		if (isSend465Port()) {
			propertiesMap.put("mail.smtp.port", "465");
			propertiesMap.put("mail.smtp.starttls.enable", "true");
			propertiesMap.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
			propertiesMap.put("mail.smtp.socketFactory.fallback", "false");
		}
	}

	/**
	 * 自動設置服務器
	 */
	public void autoSetMailSmtpHost() {
		if (CheckUtil.isNull(mailSmtpHost)) {
			String[] userAry = JavaUtil.split(this.fromAddress, "@");
			if (userAry.length > 1) {
				String hosts[] = JavaUtil.split(userAry[1], ".");
				if (hosts.length > 0) {
					String host = hosts[0];
					if ("qq".equalsIgnoreCase(host) || "allianity".equalsIgnoreCase(host)) {
						mailSmtpHost = "smtp.qq.com";
					} else if ("yahoo".equalsIgnoreCase(host)) {
						mailSmtpHost = "smtp.mail.yahoo.com.cn";
					} else if ("163".equalsIgnoreCase(host)) {
						mailSmtpHost = "smtp.163.com";
					} else if ("126".equalsIgnoreCase(host)) {
						mailSmtpHost = "smtp.126.com";
					} else if ("notice".equalsIgnoreCase(host)) {
						mailSmtpHost = "smtpdm.aliyun.com";
					} else {
						mailSmtpHost = "smtp.126.com";
					}
					// 設置發(fā)送郵件端口號
					send465Port();
				}
			}
		}
	}
}



更多文章、技術交流、商務合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 在线a人片免费观看国产 | 欧美极品福利视频在线播放 | 热久久视久久精品18国产 | 亚洲依人 | 国产69精品久久久久777 | 国产亚洲精品国产一区 | 中文国产日韩欧美视频 | 成人久草 | 成人黄色一级视频 | 性视频一区二区三区免费 | 免费国产成人午夜私人影视 | 久久国产精品2020盗摄 | 精品久久国产视频 | 亚洲国产精品高清在线一区 | 国产精品一区二区欧美视频 | 国产精品免费入口视频 | 亚洲成人小视频 | 性生活视频免费 | 狠狠干中文字幕 | 77777奇米 | 99热精品久久只有精品30 | 9久热 | 一级毛片老太婆交性欧美 | 欧美成人性色生活18黑人 | 亚洲国产精品免费 | 国产欧美亚洲三区久在线观看 | 久久青草免费视频 | 亚洲视频免费在线看 | 午夜免费福利网站 | a毛片免费在线观看 | 欧美日韩国产高清一区二区三区 | 久久99一区 | 日韩精品久久久毛片一区二区 | xxx中国bbbwww | 日本xxxx色视频在线观看免 | 奇米影视四色狠狠888俺去啦 | 国产色啪午夜免费视频 | 狼狼色丁香久久婷婷综合五月 | 四虎免费影视 | 午夜欧美视频 | 亚洲综合成人网在线观看 |