GreateHttpEmlFile.java 5.5 KB
package com.espeed.tool;

import java.io.File;
import java.io.FileOutputStream;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.activation.DataHandler;
import javax.activation.FileDataSource;
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.struts2.ServletActionContext;

import com.espeed.pojo.YxySendMailMaster;


public class GreateHttpEmlFile {
	private static MimeMessage mimeMsg = null; // MIME邮件对象
	private static javax.mail.Session mailSession = null;
		
	public static List<String> createMethod(YxySendMailMaster master,String usersetpath,String attrFile,String imgFile){
		String pathew="";
		pathew = new GreateEmlFile().getClass().getResource("/").getPath();
		pathew = pathew.substring(1, pathew.length());
		pathew = pathew.replace("/", "//");
		pathew = pathew.replace("//WEB-INF//classes//", "");
		
		String domain=master.getUser_domain();//用户域名
		String loginid=master.getUser_loginid();//用户帐号
		
		List RemlPath=new ArrayList();//定义返回值		
		String context=master.getBody();//内容		
		//获取上传的附件名
		String [] newstr=attrFile.split(",");//分割多个附件						
		int isAttr=0;//附件个数
		//1.获取附件
		String fileNames[]=new String[0];//定义附件名
		if(newstr==null||newstr[0].equals("")){//判断是否存在附件
			fileNames=new String[0];		
		}else{			
			String sysPath=ServletActionContext.getRequest().getRealPath("/mailtempfile/"+domain+"/"+loginid+"/attachment");
			fileNames=new String[newstr.length];
		    for (int i = 0; i < newstr.length; i++) {
		    	fileNames[i]=sysPath+"\\"+newstr[i];
		    }
		}
		isAttr=fileNames.length;//附件个数				
		try {
			//变量定义
			String mailName=master.getSender();//发件人
			String sendMail=master.getSend_email();//发件人邮箱
			String replyEmail=master.getReply_email();//回复邮箱
			String title=master.getSubject();//主题
			
			//------- 设置from、to等信息----------
			mimeMsg = new javax.mail.internet.MimeMessage(mailSession);

			InternetAddress sentFrom;
			//发件人
			sentFrom = new InternetAddress(sendMail ,mailName,"UTF-8");
			mimeMsg.setFrom(sentFrom);		
			//主题
			mimeMsg.setSubject(title,"UTF-8");
		
			// ---设置回复人地址---------------
			InternetAddress addressis;
			addressis = new InternetAddress(replyEmail);
			InternetAddress[] addrs = new InternetAddress[1];
			addrs[0] = addressis;
			mimeMsg.setReplyTo(addrs);

			MimeBodyPart messageBodyPart1 = new MimeBodyPart();
			messageBodyPart1.setHeader("Content-Transfer-Encoding", "base64");
		
			String nurl="http://mail.waimaoyou.cn/";
		
			//--------附件--------------------
			MimeMultipart multipart = new MimeMultipart();// 附件传输格式
			multipart.setSubType("related");//这句很重要
			multipart.addBodyPart(messageBodyPart1);

			for (int j = 0; j < fileNames.length; j++){
				MimeBodyPart messageBodyPart2 = new MimeBodyPart();
				messageBodyPart2.setHeader("Content-Transfer-Encoding", "base64");
				// 选择出每一个附件名
				String filename = fileNames[j].split("#####")[0];
				String displayname = fileNames[j].split("#####")[1];
				// 得到数据源
				FileDataSource fds = new FileDataSource(filename);
				// 得到附件本身并至入BodyPart
				messageBodyPart2.setDataHandler(new DataHandler(fds));// 得到文件名同样至入BodyPart
				messageBodyPart2.setHeader("Content-Type", "application/octet-stream;name="+displayname);
				messageBodyPart2.setFileName(MimeUtility.encodeText(displayname,"UTF-8","B"));
				multipart.addBodyPart(messageBodyPart2);
			}
			//11.判断是否有图片
			if(imgFile!=null&&!imgFile.equals("")){
				String picpath="";
				//多个图片分割
				String[] picArry=imgFile.split(",");
				for(int p=0;p<picArry.length;p++){
					//图片路径
					picpath=pathew+"/mailtempfile/"+domain+"/"+loginid+"/pic/"+picArry[p];
					File pf=new File(picpath);
					if(pf.exists()){
						MimeBodyPart gifBodyPart=new MimeBodyPart();  
						FileDataSource fds=new FileDataSource(pf);//图片所在的目录的绝对路径 
	                    gifBodyPart.setDataHandler(new DataHandler(fds)); 
	                    gifBodyPart.setHeader("Content-Type", "image/jpeg");
	                    gifBodyPart.setFileName(MimeUtility.encodeText("espeedpic.jpg","UTF-8","B"));
	                    gifBodyPart.setContentID("<IMG"+p+">");   //cid的值  
	                    multipart.addBodyPart(gifBodyPart);
					}
				}
			}
			messageBodyPart1.setContent(context,"text/html" + ";charset=" + "UTF-8");
			
			mimeMsg.setContent(multipart);

			//------------- 设置信件头的发送日期---------------
			mimeMsg.setSentDate(new Date());
			
			//文件存放路径
			//以当前用户名+当前日期为文件名
			SimpleDateFormat df=new SimpleDateFormat("yyyyMMddHHssmm");
			String nowDate=df.format(new Date());
			String emlfileName="";
			emlfileName=loginid+nowDate + ".eml";
			//保存邮件
			File dir = new File(usersetpath);
			dir.mkdirs();// 创建所有目录,包括子目录	
			mimeMsg.writeTo(new FileOutputStream(dir+"\\" + emlfileName));
			//返回值
			RemlPath.add(mimeMsg.getSize());//文件大小 
			RemlPath.add(usersetpath + "\\" + emlfileName);//返回eml存放路径			
		//异常处理
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		return RemlPath;
	
	
	} 
}