145f5d7d2aa3d3116f48fa6bc7b280efd38266b1.svn-base
6.6 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
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
package com.espeed.yxy.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 com.espeed.yxy.pojo.YxySendMailMaster;
/*
* 程序名称: EspeedMail_时速邮箱
* 程序版本: V1.0
* 作 者: 深圳市科飞时速网络技术有限公司(0755-88843776)
* 版权所有: 深圳市科飞时速网络技术有限公司
* 技术支持: Tech@21gmail.com
* 单元名称: 生成本地邮件(营销邮)
* 开始时间: 2013.12.13
* 程 序 员: 谢勇
* 最后修改:
* 备 注: 如需修改请通知程序员
*/
public class GreateEmlFile {
private static MimeMessage mimeMsg = null; // MIME邮件对象
private static javax.mail.Session mailSession = null;
/**生成eml文件*/
public static List<Object> GreateMail(YxySendMailMaster yxysendmailmaster,String loginid,String domain,String uploadattrName,String usersetpath)throws Exception{
List<Object> RemlPath=new ArrayList<Object>();
RemlPath.add("0");
RemlPath.add("");
RemlPath.add("");
RemlPath.add("0");
RemlPath.add("");
//营销web路径(文件路径)
String pathew=ConfigPath.getYxyServicePath();
//内容
String context=yxysendmailmaster.getBody();
//获取上传的附件名
String newUpload=uploadattrName.replaceAll("\"", "");
String [] newstr=newUpload.split(",");//分割多个附件
int isAttr=0;//附件个数
//1.获取附件
String fileNames[]=new String[0];//定义附件名
if(newstr==null||newstr[0].equals("")){//判断是否存在附件
fileNames=new String[0];
}else{
String sysPath=pathew+"/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;//附件个数
//变量定义
String mailName=yxysendmailmaster.getSender();//发件人
String sendMail=yxysendmailmaster.getSend_email();//发件人邮箱
String replyEmail=yxysendmailmaster.getReply_email();//回复邮箱
String title=yxysendmailmaster.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");
//--------附件--------------------
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");
//messageBodyPart2.setContentLanguage("UTF-8");
// 选择出每一个附件名
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);
}
String resultpicpath="";//图片路径
//11.判断是否有图片
String[] picpath=context.split("<img");
for(int i=0;i<picpath.length;i++){
if(picpath[i].contains("src")){
int index=picpath[i].indexOf("mailtempfile/");
if(index==-1){
continue;
}
//处理字符
String[] picAarry=picpath[i].split("src=\"");
int end=picAarry[1].indexOf("\"");
String result=picAarry[1].substring(0,end);
//获取图片路径
int pathbegin=result.indexOf("mailtempfile");
String path=result.substring(pathbegin,result.length());
String picpaths=pathew+"\\"+path;//图片真实路径
//获取图片保存名字
//String[] filenamestr=result.split("/");
//String picname=filenamestr[filenamestr.length-1];
resultpicpath+=path+"#####";
//替换图片
context=context.replaceFirst(result,"cid:IMG"+i);
//加入图片源码
File pf=new File(picpaths);
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"+i+">"); //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));
File files=new File(dir+"\\" + emlfileName);
//返回值
RemlPath.set(0,files.length());//文件大小
RemlPath.set(1,usersetpath + "\\" + emlfileName);//返回eml存放路径
//RemlPath.set(2,"");//文件key
RemlPath.set(3,isAttr);//是否有附件
RemlPath.set(4,resultpicpath);//图片路径
return RemlPath;
}
}