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

EmailUtil工具類

張軍 5749 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://www.eyofj.com">張軍個人網站</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);

	/**
	 * 發送郵件
	 * 
	 * @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());
			// 設置發信人
			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());
			// 設置發信時間
			message.setSentDate(new Date());
			// 發送郵件
			Multipart mm = new MimeMultipart();
			if (dto.getContentObj() == null) {
				dto.setContentObj("");
			}
			BodyPart mdpContent = new MimeBodyPart();
			// 添加內容
			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方式登錄郵箱,第一個參數是發送郵件用的郵件服務器SMTP地址,第二個參數為用戶名,第三個參數密碼
			transport.connect(dto.getMailSmtpHost(), dto.getUser(), dto.getPassword());
			// 發送郵件,其中第二個參數是所有已設好的收件人地址
			transport.sendMessage(message, message.getAllRecipients());
			transport.close();
			logger.info("發送郵件成功");
			return true;
		} catch (Exception e) {
			throw new ServiceException(e);
		}
	}
}

email工具類參數

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工具類參數<br>
 * 
 * @version 1.00 (2011/11/08)
 * @author 張軍 {@link  <a target=_blank href="http://www.eyofj.com">張軍個人網站</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;

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

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

	/**
	 * 改成465端口發送
	 */
	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";
					}
					// 設置發送郵件端口號
					send465Port();
				}
			}
		}
	}
}



更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

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

【本文對您有幫助就好】

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

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 久草在线国产 | 一级毛片高清大全免费观看 | 日本欧美中文字幕 | 欧美一级大片在线观看 | 久久九九99热这里只有精品 | 麻豆一区二区三区四区 | 狠狠色噜噜狠狠狠狠 | 亚洲国产成人在线观看 | 日韩欧美国产偷亚洲清高 | 久久www香蕉免费人成 | 精品久久久久久久 | 亚洲国产模特在线播放 | 秒播影视 午夜福利毛片 | 日韩久久影院 | h在线免费视频 | 色偷偷亚洲第一综合 | 国产欧美另类久久精品91 | 香蕉成人在线 | 成人综合久久综合 | 91成品视频 | 何以笙箫默在线观看 | 久操国产视频 | 日日拍夜夜嗷嗷叫视频 | 久久中文字幕久久久久91 | 欧美精品啪啪 | 四虎永久免费地ww4hu57 | 免费福利小视频 | 久久综合九色综合91 | 久久精品国产99久久99久久久 | 久久99热久久国产精品 | 国产福利一区二区三区在线视频 | 92福利网| 欧美成人在线免费 | 五月在线视频 | 色综合小说天天综合网 | 狠狠亚洲婷婷综合色香 | 欧美亚洲桃花综合 | 成人sese| 欧美一级日韩 | 伊人久久综合网站 | 香蕉国产在线 |