GreateHttpEmlFile.java
5.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
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;
}
}