`
阅读更多

示例:

               /** 
	 * 前臺 發送郵件
	 * add by ZhangMingShuang
	 */
	public void sendMain(Forecast forecast,Product product,Authorize authorize,String userId){
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		Date d = new Date();
		
		StringBuffer subject = new StringBuffer();//郵件主題
		subject.append("[產品經銷服務網]");
		subject.append("["+forecast.getCompany()+"]");//公司名稱
		subject.append("["+product.getProductType()+"]\n");//產品類別
		
		StringBuffer content = new StringBuffer();//郵件內容
		content.append("Dear test姓名\n");
		content.append("產品經銷服務網報備審核通知(http://booking.tkb.com.tw/admin),請儘速完成審核作業,謝謝!\n\n");
		content.append("※報備資料\n");
		content.append("經銷商帳號:TKB0001032\n");
		content.append("經銷商名稱:宋弘仁\n");
		content.append("產品類別:"+product.getProductType()+"\n");
		content.append("授權版本:"+authorize.getAuthorizeName()+"\n");
		content.append("公司名稱:"+forecast.getCompany()+"\n");
		content.append("部門名稱:"+forecast.getDept()+"\n");
		content.append("聯絡人:"+forecast.getContact()+"\n");
		content.append("聯絡電話:"+forecast.getContactTel()+"\n");
		content.append("產品名稱:"+forecast.getProductName()+"\n");
		content.append("產品金額:"+forecast.getAmount()+"\n");
		content.append("說明:");
		if(forecast.getMemo() != null && !"".equals(forecast.getMemo())){
			content.append(forecast.getMemo()+"\n");
		}else{
			content.append("無\n");
		}
		content.append("報備日期:"+sdf.format(d)+"\n");
		content.append("有效日期:"+sdf.format(forecast.getEffectvieDate())+"\n");
		content.append("\n");
//		MailSender mail = new MailSender(DeployInfoUtil.getEmailSender(),DeployInfoUtil.getEmailSenderName(),"423883220@qq.com","423883220@qq.com",DeployInfoUtil.getEmailHost(),"測試",content,DeployInfoUtil.getDesKey(),DeployInfoUtil.getDesModeAndPadding());
//		mail.sendMail();
		
		MailInfo mi = new MailInfo();
		mi.setContentType(MailInfo.CONTENTTYPE_TEXT);//郵件類型
		mi.setSubject(subject.toString());//主題
		mi.setText(content.toString());//內容
		mi.setTo("zms198983@163.com");//收件人
		
		MailUtil.sendSimpleMail(mi);
		
	}

}

   MailInfo.java

package com.dealership.util;

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

import com.xmtkb.util.spring.DeployInfoUtil;



/**
 * @author ZhangDe 
 * @version 建立時間:Apr 1, 2010 4:17:46 PM
 * 類說明:郵件信息
 */
public class MailInfo {
	
//	郵件類型 text /html
	public static String CONTENTTYPE_TEXT="text";
	public static String CONTENTTYPE_HTML="html";
	
	public static String CONTEENTYPE_HTML_CONTENT = "text/html;charset=utf-8";
	
	private String subject; //標題
	private String text; //正文
	private String from = DeployInfoUtil.getEmailSender();//發送郵箱
	private String to; //接收郵箱
	private String[] toArray; //群發的郵件數組
	private String[] toBccArray; //密件抄送群發郵件數組
	private String encode = "UTF-8"; //字符編碼 , 預設是UTF-8
	private String contentType = CONTENTTYPE_TEXT; //郵件類型 text /html
	private List file = new ArrayList();//儲存附件路徑
	
	//by huangyonghua
	public MailInfo(){
		//
	}


    /**
     * 一封郵件
     * @param subject
     * @param text
     * @param to
     */
	public MailInfo(String subject, String text, String to) {
		super();
		this.subject = subject;
		this.text = text;
		this.to = to;
	}
	
	/**
	 * 密件群組發送
	 * @param subject
	 * @param text
	 * @param from
	 * @param toArray
	 */	
	public MailInfo(String subject, String text,  String[] toBccArray) {
		super();
		this.subject = subject;
		this.text = text;
		this.toBccArray = toBccArray;
	}

	public String getEncode() {
		return encode;
	}
	public void setEncode(String encode) {
		this.encode = encode;
	}
	public String getSubject() {
		return subject;
	}
	public void setSubject(String subject) {
		this.subject = subject;
	}
	public String getText() {
		return text;
	}
	public void setText(String text) {
		this.text = text;
	}
	public String getTo() {
		return to;
	}
	public void setTo(String to) {
		this.to = to;
	}
	public String[] getToArray() {
		return toArray;
	}
	public void setToArray(String[] toArray) {
		this.toArray = toArray;
	}
	public String[] getToBccArray() {
		return toBccArray;
	}
	public void setToBccArray(String[] toBccArray) {
		this.toBccArray = toBccArray;
	}




	public String getFrom() {
		return from;
	}




	public void setFrom(String from) {
		this.from = from;
	}

	public List getFile() {
		return file;
	}

	public void setFile(List file) {
		this.file = file;
	}

	public String getContentType() {
		return contentType;
	}

	public void setContentType(String contentType) {
		this.contentType = contentType;
	}
	
	

}

 MailUtil.java

package com.dealership.util;

import java.io.UnsupportedEncodingException;
import java.util.Date;
import java.util.Iterator;

import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
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.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.mail.MailException;
import org.springframework.mail.MailSender;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessagePreparator;

import com.xmtkb.util.spring.SpringContextUtil;

/**
 * @author ZhangDe 
 * @version 建立時間:Apr 1, 2010 5:12:07 PM
 * 類說明:郵件發送
 */
public class MailUtil {
	
	private static final Log log = LogFactory.getLog(MailUtil.class);   
	/**
	 * 發送電子郵件(可單發,群發,密件發送,但不能加附件)
	 * @param mail
	 * @return
	 */
	public static boolean sendSimpleMail(MailInfo mail){
		try {
			MailSender sender = getMailSender();
			SimpleMailMessage smm = getSMM(mail);
			sender.send(smm);
			log.info("發送Email成功");
			return true;
		} catch (MailException e) {
			e.printStackTrace();
			log.debug("發送Email失敗");
			return false;
		}
	}
	
	/**
	 * 
	 * 發送複雜郵件(可單發,群發,密件發送,但不能加附件)
	 * @param mail
	 * @return
	 */
	public static boolean sendMimeMessage(final MailInfo mail){
		try {
			JavaMailSender sender = (JavaMailSender)getMailSender();

			MimeMessagePreparator preparator = new MimeMessagePreparator(){

				public void prepare(MimeMessage msg) throws MessagingException {
				
					msg.setFrom(new InternetAddress(mail.getFrom()));
					if(mail.getTo()!= null && !mail.getTo().equals("")){
						msg.setRecipients(Message.RecipientType.TO, //單個地址
								InternetAddress.parse(mail.getTo()));
					}
					if(mail.getToArray()!= null && mail.getToArray().length>0){
						msg.setRecipients(Message.RecipientType.TO, //發送多個地址
								InternetAddress.parse(strArrayFromStr(mail.getToArray())));
					}
					if(mail.getToBccArray()!= null && mail.getToBccArray().length>0){
						msg.setRecipients(Message.RecipientType.BCC, //發送多個地址
								InternetAddress.parse(strArrayFromStr(mail.getToBccArray())));
					}	
					
					msg.setSubject(mail.getSubject());
					Multipart mp = new MimeMultipart();
					msg.setContent(mp);
					
					MimeBodyPart mbpContent = new MimeBodyPart();//增加文本內容
					if(mail.getContentType().equals(MailInfo.CONTENTTYPE_TEXT)){ //text格式郵件
						mbpContent.setText(mail.getText());
					}else{//html格式郵件
						mbpContent.setContent(mail.getText(), MailInfo.CONTEENTYPE_HTML_CONTENT);
					}					
					mp.addBodyPart(mbpContent);
					
					for (Iterator iter = mail.getFile().iterator(); iter.hasNext();) {
						String  filePath = (String ) iter.next();
						MimeBodyPart mbpFile = new MimeBodyPart();//增加附件
						FileDataSource fds = new FileDataSource(filePath);//路徑
						mbpFile.setDataHandler(new DataHandler(fds));
						try {
							mbpFile.setFileName(MimeUtility.encodeText(fds.getName()));//編碼處理
						} catch (UnsupportedEncodingException e) {
							e.printStackTrace();
						}
						mp.addBodyPart(mbpFile);
					}
					msg.setSentDate(new Date());
					
				}
			};
			
			sender.send(preparator);
			log.info("發送Email成功");
			return true;
		} catch (MailException e) {
			e.printStackTrace();
			log.debug("發送Email失敗");
			return false;
		}
	}
	
	public static String strArrayFromStr(String val[]){
		String returnVal = "";
		for (int i = 0; i < val.length; i++) {
			returnVal = (i==0 ? val[i]:returnVal+","+ val[i]);
		}
		return returnVal;
	}
	
	/**
	 * 取得郵件發送
	 * @return
	 */
	public static MailSender getMailSender(){
		MailSender mailSender = (MailSender)SpringContextUtil.getApplicationContext().getBean("mailSender");
		return mailSender;
	}
	
	/**
	 * to(單發), toArray(群發), toBccArray(密件群發),只能有一個
	 * @param mail
	 * @return
	 */
	public static SimpleMailMessage getSMM(MailInfo mail){
		SimpleMailMessage smm = new SimpleMailMessage();
		smm.setSubject(mail.getSubject());
		smm.setText(mail.getText());
		smm.setFrom(mail.getFrom());
		if(mail.getTo()!= null && !mail.getTo().equals("")){
			smm.setTo(mail.getTo());
		}
		if(mail.getToArray()!= null && mail.getToArray().length>0){
			smm.setTo(mail.getToArray());
		}
		if(mail.getToBccArray()!= null && mail.getToBccArray().length>0){
			smm.setBcc(mail.getToBccArray());
		}		
		return smm;
	}

}

 MailContent.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>
    <!-- 配置郵件服務器 -->
	<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
	<!-- SMTP服務器 -->
	<property name="host">
	     <value>${email.host}</value>
	</property>
	
	<!-- 設置發送郵件的相關屬性 -->
	<property name="javaMailProperties">
	    <props>
	         <!-- 是否需要用戶密碼  -->
	        <prop key="mail.smtp.auth">true</prop>
	        <!-- 超時時間(單位:毫秒) -->
	        <prop key="mail.smtp.timeout">25000</prop>
	        <!-- gmail smtp server必須參數
            <prop key="mail.smtp.starttls.enable">true</prop>
            <prop key="mail.smtp.prot">${email.port}</prop>
            <prop key="mail.smtp.socketFactory.class">javax.net.ssl.SSLSocketFactory</prop>
            <prop key="mail.smtp.socketFactory.fallback">false</prop>
	        <prop key="mail.smtp.socketFactory.port">${email.port}</prop> 
	        -->
	    </props>	
	</property>
	
	<!-- 設置用戶和密碼 -->
	<property name="username">
	    <value>${email.username}</value>
	</property>
	
	<property name="password">
	    <value>${email.password}</value>
	</property>
	
</bean>
	

</beans>

 SpringContentUtil.java

package ssh.spring;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 * @author ZhangDe
 * @version 創建時間:Dec 16, 2008 2:10:58 PM 
 * 類說明:spring 應用 單例
 */
public class SpringContextUtil {
	private static ApplicationContext context;
	public static ApplicationContext getApplicationContext() {
		if (context == null) {
			//数组
			/*context = new ClassPathXmlApplicationContext(
					new String[] { "classpath:/config/spring/applicationContext.xml",
							"classpath:/config/spring/serviceContext.xml"							

					});*/
			//通配符
			context = new ClassPathXmlApplicationContext("classpath:/config/spring/*Context.xml");
		}
		return context;
	}

	public static void setApplicationContext(ApplicationContext outcontext) {
		context = outcontext;
	}

}

 

0
1
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics