xinyb
2024-09-10 8c1986f019fc92360534e4f8b7d1688ac0bff9fd
提交 | 用户 | age
a6a76f 1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
F 2 <%
3     //@author hq
4     //2010-10-07
5 %>
6 <%@page import="com.yc.action.mail.EmailConfigUtils"%>
7 <%@page import="com.yc.action.mail.entity.MailInfo"%>
8 <%@page import="com.yc.action.mail.service.MailInfoIfc"%>
9 <%@page import="com.yc.factory.FactoryBean"%>
10 <%@ page import="com.yc.utils.MapSet"%>
11 <%@page import="com.yc.sdk.shopping.util.SettingKey"%>
12 <%
13     //得到URL
14     String URL =SettingKey.getHostUrl(request);
15     String messageId = request.getParameter("messageId");
16     if(messageId==null)return;
17     String msgfrom = request.getParameter("msgfrom");
18     String isNew = request.getParameter("isNew");
19     MailInfo mailInfo = null;
20     if(messageId!=null&&!"".equals(messageId.trim())){
21         MailInfoIfc infoIfc = (MailInfoIfc)FactoryBean.getBean("MailInfoImpl");
22         mailInfo = infoIfc.getMailInfo(messageId,(String)session.getAttribute("@usercode"));
23         if(mailInfo==null)return;
24     }
25     
26     //获取邮件地址历史
27         String EmailAddrHis="";
28         List arraylist_email=(List)request.getAttribute("arraylist_email");
29         if (arraylist_email == null)
30             arraylist_email = Collections.EMPTY_LIST;
31         Map colMap;
32         for (int i = 0; i < arraylist_email.size(); i++) {
33             colMap = (Map) arraylist_email.get(i);
34             String msgto=MapSet.ShowMap(colMap,"msgto");
35             
36             if(msgto.indexOf("\"")>-1)
37             {
38                 msgto=msgto.replace("\"", "\\\"");
39             }
40             EmailAddrHis+=","+"\""+msgto+"\"";
41             
42             System.out.println("msgto:"+msgto);
43             }
44         if(EmailAddrHis.length()>0)
45         {
46             EmailAddrHis=EmailAddrHis.substring(1);
47         }
48         System.out.println("EmailAddrHis:"+EmailAddrHis);
49         
50 %>
51 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Tran sitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
52
53 <%@page import="java.net.URLDecoder"%><html>
54 <head>
55 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
56 <title>邮件发送</title>
57 <link href="<%=URL%>/mail/css/cont.css" rel="stylesheet" type="text/css"></link>
58 <script type="text/javascript" src="<%=URL%>/mail/ckeditor/ckeditor.js"></script>
59 <script type="text/javascript" src="<%=URL%>/js/jquery.js"></script>
60 <script src="<%=URL%>/mail/js/dialog.js"></script>
61 <link href="<%=URL%>/mail/images/blue/css.css" rel="stylesheet" type="text/css" id="showdialogcss" />
62 <style type="text/css">
63 input.in {
64     width: 655px;border: 1px solid #cccccc;height: 18px;float: left;
65 }.mhead{float: left;width:760px;}
66 .mhead ul{display: block;float: left;}
67 .dis_lab{width: 80px;margin:0px 0px 0px 5px;padding:0px;}
68 .values{width: 670px;margin: 0px;padding:0px;}
69 .dis_lab li,.values li{list-style: none;height: 30px;line-height: 30px;vertical-align: middle;}
70 .bcc,.cc{display: none;}
71 .addBcc{margin-left: 35px;}
72 .addCc{margin-left:10px;}
73 .selectContact{margin-left: 50px;}
74 .selectCc{margin-left: 20px;display: none;}
75 .attas{line-height: 30px;height: auto;}
76 .atta{display:block;float: left;margin-right:35px;}
77 .atta font{margin-left:10px;margin-right:10px;}
78 .atta a{margin-left:5px;margin-right:5px;}
79 <%if(mailInfo!=null&&!"".equals(mailInfo.getMsgbcc())){ %>
80 .bcc{display:block;}
81 <%} %>
82 <%if(mailInfo!=null&&!"".equals(mailInfo.getMsgcc())){ %>
83 .cc{display:block;}
84 <%} %>
85 </style>
86 <script type="text/javascript">
87 var isNewMail = true;//判断是否新邮件
88 $(function(){
89     $('#diagx').ShowDialog({
90         Width:"310",
91         Height:"530",
92         Title:"添加联系人",
93         skin:"blue",
94         ContentFlag:"0",
95         FrameURL:"/mail/selectContact.jsp", 
96         //Contents:'ddddddddddddddddddddddddddddddd',
97         IsDrag:"0",
98         IsAutoCenter:"0"
99         });
100 });
101     window.onunload=function(){
102         var isNew = "<%=isNew %>";
103         if(isNew=="true"&&isNewMail==true){
104             if(confirm("是否保存草稿?")){
105                 saveMail();
106             }else{
107                 $.post("/delMail.do",{"messageId":$("#messageId").val()},function(data){
108                        if(data=="error"){
109                             alert("删除出现异常!");
110                        }
111                   });
112             }
113         }
114     }
115     var messageId="<%=messageId==null?"":messageId %>";
116     //添加抄送密送-----
117     function addBcc(){
118         if($(".bcc").css("display")=="none"){
119             $(".bcc").css("display","block");
120             $("#selectBcc").css("display","inline");
121             $(".addBcc a").text("删除抄送");
122         }else{
123             $(".bcc,#selectBcc").css("display","none");
124             $("#mailBcc").val("");
125             $(".addBcc a").text("添加抄送");
126         }
127     }
128     function addCc(){
129         if($(".cc").css("display")=="none"){selectCc
130             $(".cc").css("display","block");
131             $("#selectCc").css("display","inline");
132             $(".addCc a").text("删除密送");
133         }else{
134             $(".cc,#selectCc").css("display","none").val("");
135             $("#mailCc").val("");
136             $(".addCc a").text("添加密送");
137         }
138     }
139     //保存邮件到草稿
140     function saveMail(){
141         if($.trim($("#mailSubject").val())==""){
142             alert("邮件主题不允许为空!");return;
143         }
144         $.post("/save2draft.do",{
145             mailBcc:$("#mailBcc").val(),
146             mailCc:$("#mailCc").val(),
147             mailTo:$("#mailTo").val(),
148             mailSubject:$("#mailSubject").val(),
149             mailText:remark_ck.getData(),
150             mailId:$("#mailId").val(),
151             messageId:$("#messageId").val(),
152             uid:$("#uid").val()
153             },function(data){
154                 if(data.code=='error'){
155                     alert(data.info);
156                 }else if(data.code=='success'){
157                     isNewMail=false;//标识不是新邮件
158                     alert("保存成功!");
159                     location.href="xiexin.jsp?messageId="+data.mail.messageId;
160                 }
161         },"json");
162     }
163     //发送
164 function submits(){
165     $("#mailText").val(remark_ck.getData());
166     var mailTo=$("#mailTo").val();
167     var mailBcc=$("#mailBcc").val();
168     var mailCc=$("#mailCc").val();
169     if($.trim(mailTo)==""){
170         alert("收件人地址不允许为空!");
171         return;
172     }if(!validateeEmails(mailTo)){
173         alert("邮件地址格式不正确,多收件人时用分号隔开!");
174         return;
175     }
176     
177     if($.trim(mailBcc)!=""){
178         if(!validateeEmails(mailBcc)){
179             alert("抄送地址格式不正确,多人时用分号隔开!");
180             return;
181         }
182     }
183     if($.trim(mailCc)!=""){
184         if(!validateeEmails(mailCc)){
185             alert("密送地址格式不正确,多人时用分号隔开!");
186             return;
187         }
188     }
189     isNewMail=false;//标识不是新邮件
190     document.getElementById("mailForm").submit();
191 }
192 //上传附件
193 function uploadAtta(){
194
195     var msgId=$("#messageId").val();
196     if($.trim(msgId)==""){
197         alert("邮件需要存草稿后才能添加附件!");return;
198     }
199     var obj = window.showModalDialog("<%=URL%>/mail/attaupload.jsp?messageId="+msgId,"",
200         "dialogWidth=380px;dialogHeight=350px;resizable=no;dialogLeft:330px;dialogTop:170px;");
201     if(obj==1){
202         getAttas();
203     }
204 }
205 //onload加载时获得附件信息
206 function getAttas(){
207     var msgId = $.trim($("#messageId").val());
208     if(msgId!=""){
209         $.post("/getMailAttas.do",{'messageId':msgId},function(json){
210             var html="";
211             var temp=null;
212             var obj=null;
213             for(var i=0;i<json.length;i++){
214                 obj=json[i];
215                 temp=parseInt(obj.filesize);
216                 if((temp/1024)>1024){
217                     temp=(temp/1024/1024).toFixed(1)+"M";
218                 }else{
219                     temp=(temp/1024).toFixed(1)+"K";
220                 }
221                 html+="<span id=\"atta_"+obj.id+"\" class=\"atta\">"+obj.filename+"<font class=\"fsize\">"+temp+"</font> <a href=\"/mailAtta.do?attachmentid="+obj.id+"\">下载</a>|<a href=\"javascript:delAtta('"+obj.id+"');\">删除</a></span>";
222            }
223         $(".attas").html(html);
224       },"json");
225     }
226 }
227 function delAtta(attaid,doc){
228     $.post("/delMailAtta.do",{'attachmentid':attaid},function(json){
229         if(json.code=="success"){
230             $("#atta_"+attaid).remove();
231         }else if(json.code=="error"){
232             alert(json.info);
233         }
234     },"json");
235 }
236 window.onload=function(){
237     getAttas();
238     showMailAddress();
239 }
240 function validateEmail(field) {
241     var regex=/\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b/i;
242     return (regex.test(field)) ? true : false;
243 }
244
245 function validateeEmails(value) {
246     var result = value.split(";");
247     for(var i = 0;i < result.length;i++)
248     if(!validateEmail(result[i])) 
249             return false;               
250     return true;
251 }
252 //选择联系人---------------------------
253 var selectType="";
254 function showSelectContact(type){
255     selectType=type;
256     $('#diagx').click();
257 }
258 function selectContactClose(){
259     $("#diagclose").click();
260 }
261 function callBackSelect(contacts){
262     var value = $("#mailTo").val();
263     var temp ="";
264     for(var i=0;i<contacts.length;i++){
265         if(value.indexOf(contacts[i].email)!=-1)continue;
266         if(temp.length>1)temp+=";";
267         temp+='"'+contacts[i].text.replaceAll('"')+'" <'+contacts[i].email+'>';
268     }
269     if(value.length>1&&value.substring(value.length-1)!=";"&&temp.length>1){
270         value+=";";
271     }
272     value+=temp;
273     if(selectType=="cc"){
274         $("#mailCc").val(value);
275     }else if(selectType=="bcc"){
276         $("#mailBcc").val(value);
277     }else{
278         $("#mailTo").val(value);
279     }
280 }
281 //为String对象添加replaceAll
282 String.prototype.replaceAll = stringReplaceAll;
283 function stringReplaceAll(AFindText,ARepText){
284 raRegExp = new RegExp(AFindText,"g");
285 return this.replace(raRegExp,ARepText)
286 }
287
288 //============收件人地址关联功能=================
289 function showMailAddress()
290 {
291     var nowid;
292     var totalid;
293     var can1press = false;
294     var emailafter;
295     var emailbefor;
296
297     //alert("1");
298     $("#mailTo").focus(function(){ //文本框获得焦点,插入Email提示层
299         $("#myemail").remove();
300     $(this).after("<div id='myemail' style='width:500px; height:auto; background:#fff; color:#6B6B6B; position:absolute; left:"+$(this).get(0).offsetLeft+"px; top:"+($(this).get(0).offsetTop+$(this).height()+2)+"px; border:1px solid #ccc;z-index:5px; '></div>");
301         if($("#myemail").html()){
302              $("#myemail").css("display","block");
303     $(".newemail").css("width",$("#myemail").width());
304         can1press = true;
305         } else {
306              $("#myemail").css("display","none");
307         can1press = false;
308         }        
309     }).keyup(function(){ //文本框输入文字时,显示Email提示层和常用Email
310         var press = $("#mailTo").val();
311         if (press!="" || press!=null){
312         var emailtxt = "";            
313         //var emailvar = new Array("@163.com","@126.com","@yahoo.com","@qq.com","@sina.com","@gmail.com","@hotmail.com","@foxmail.com");
314         var emailvar = new Array(<%=EmailAddrHis %>);
315         totalid = emailvar.length;
316             var emailmy = "<div class='newemail' style='width:500px; color:#6B6B6B; overflow:hidden;'><font color='#D33022'>" + press + "</font></div>";
317             if(!(isEmail(press))){
318                 for(var i=0; i<emailvar.length; i++) {
319                     //emailtxt = emailtxt + "<div class='newemail' style='width:170px; color:#6B6B6B; overflow:hidden;'><font color='#D33022'>" + press + "</font>" + emailvar[i] + "</div>"
320                    // alert(press+"|"+emailvar[i]+"|"+emailvar[i].indexOf(press));
321                     if(emailvar[i].indexOf(press)>-1)
322                     {
323                         //emailtxt = emailtxt + "<div class='newemail' style='width:500px; color:#6B6B6B; overflow:hidden;'><font color='#D33022'>" + press + "</font>" + emailvar[i] + "</div>"
324                         emailtxt = emailtxt + "<div class='newemail' style='width:500px; color:#6B6B6B; overflow:hidden;'>" + emailvar[i] + "</div>";
325                     }
326                 }
327             } else {
328                 emailbefor = press.split("@")[0];
329                 emailafter = "@" + press.split("@")[1];
330                 for(var i=0; i<emailvar.length; i++) {
331                      var theemail = emailvar[i];
332                      if(theemail.indexOf(emailafter) == 0)
333                      {
334                         // emailtxt = emailtxt + "<div class='newemail' style='width:500px; color:#6B6B6B; overflow:hidden;'><font color='#D33022'>" + emailbefor + "</font>" + emailvar[i] + "</div>";
335                         emailtxt = emailtxt + "<div class='newemail' style='width:500px; color:#6B6B6B; overflow:hidden;'><font color='#D33022'>" + emailbefor + "</font>" + emailvar[i] + "</div>";
336                      }
337                 }
338             }
339             $("#myemail").html(emailmy+emailtxt);
340             if($("#myemail").html()){
341                  $("#myemail").css("display","block");
342                  $(".newemail").css("width",$("#myemail").width());
343                  can1press = true;
344             } else {
345                  $("#myemail").css("display","none");
346                  can1press = false;
347             }
348             beforepress = press;
349         }
350         if (press=="" || press==null){
351             $("#myemail").html("");        
352              $("#myemail").css("display","none");    
353         }                
354     })
355     $(document).click(function(){ //文本框失焦时删除层
356         if(can1press){
357             $("#myemail").remove();
358             can1press = false;    
359             if($("#mailTo").focus()){
360                 can1press = false;
361             }
362         }
363     })
364     $(".newemail").live("mouseover",function(){ //鼠标经过提示Email时,高亮该条Email
365         $(".newemail").css("background","#FFF");
366         $(this).css("background","#CACACA");        
367         $(this).focus();
368         nowid = $(this).index();
369     }).live("click",function(){ //鼠标点击Email时,文本框内容替换成该条Email,并删除提示层
370         var newhtml = $(this).html();
371         newhtml = newhtml.replace(/<.*?>/g,"");
372         newhtml = newhtml.replace("<","&lt;");
373         newhtml = newhtml.replace(">","&gt;");
374         $("#mailTo").val(newhtml); 
375         $("#myemail").remove();
376     })
377     $(document).bind("keydown",function(e)  
378     {     
379         if(can1press){
380             switch(e.which)     
381             {            
382                 case 38:
383                 if (nowid > 0){        
384                     $(".newemail").css("background","#FFF");
385                     $(".newemail").eq(nowid).prev().css("background","#CACACA").focus();
386                     nowid = nowid-1;        
387                 }
388                 if(!nowid){
389                     nowid = 0;
390                     $(".newemail").css("background","#FFF");
391                     $(".newemail").eq(nowid).css("background","#CACACA");        
392                     $(".newemail").eq(nowid).focus();                
393                 }
394                 break;       
395         
396                 case 40:
397                 if (nowid < totalid){                
398                     $(".newemail").css("background","#FFF");
399                     $(".newemail").eq(nowid).next().css("background","#CACACA").focus();    
400                     nowid = nowid+1;            
401                 }
402                 if(!nowid){
403                     nowid = 0;
404                     $(".newemail").css("background","#FFF");
405                     $(".newemail").eq(nowid).css("background","#CACACA");        
406                     $(".newemail").eq(nowid).focus();                
407                 }
408                 break;  
409         
410                 case 13:
411                 var newhtml = $(".newemail").eq(nowid).html();
412                 newhtml = newhtml.replace(/<.*?>/g,"");
413                 newhtml = newhtml.replace("<","&lt;");
414                 newhtml = newhtml.replace(">","&gt;");
415                 $("#mailTo").val(newhtml); 
416                 $("#myemail").remove();
417             }
418         }   
419     })
420 }
421
422 //检查email邮箱
423 function isEmail(str){
424     if(str.indexOf("@") > 0)     
425     {     
426         return true;
427     } else {
428         return false;
429     }
430 }
431 //=======================//
432 </script>
433 </head>
434 <body class="right_body">
435 <% %>
436 <form action="/sendMail.do?type=<%=request.getParameter("type")%>" method="post"  id="mailForm">
437
438 <div class="mhead">
439     <ul class="dis_lab">
440     <li>&nbsp;</li>
441        <li>发件人</li>
442        <li>邮件标题</li>
443        <li>收件人</li>
444        <li class="bcc">抄送</li>
445        <li class="cc">密送</li>
446        <li><a href="javascript:uploadAtta();">添加附件</a></li>
447    </ul>
448    <ul class="values">
449    <li><input type="button" onclick="submits();" value="发 送" id="send"/>&nbsp;
450     <input type="button" value="保存草稿" id="save2draft" onclick="saveMail();"></input></li>
451        <li>
452        <%
453            String type = request.getParameter("type");
454        if(type.indexOf("?")!=-1){
455            type = type.substring(0,type.indexOf("?"));
456        }
457            if(type.equals("location")){
458        %>
459        <%=session.getAttribute("@usercode").toString().toLowerCase()+"@"+EmailConfigUtils.getMailConfig("mail.domain") %>
460        <%}else{ %>
461        <%=type %>
462        <%} %>
463                <span class="addBcc"><a href="javascript:addBcc();"><%if(mailInfo!=null&&mailInfo.getMsgbcc()!=null&&!"".equals(mailInfo.getMsgbcc())){ %>删除抄送<%}else{ %>添加抄送<%} %></a></span>
464                <span class="addCc"><a href="javascript:addCc();"><%if(mailInfo!=null&&mailInfo.getMsgcc()!=null&&!"".equals(mailInfo.getMsgcc())){ %>删除密送<%}else{ %>添加密送<%} %></a></span>
465                <span class="selectContact"><a href="javascript:showSelectContact();">选择收件人地址</a></span>
466                <span class="selectCc" id="selectBcc"><a href="javascript:showSelectContact('bcc');">选择抄送地址</a></span>
467                <span class="selectCc" id="selectCc"><a href="javascript:showSelectContact('cc');">选择密送地址</a></span>
468        </li>
469        <%if(mailInfo!=null){        
470  %>
471         <input type="hidden" id="mailId" name="mailId" value="<%=mailInfo.getMailId() %>"></input>
472        <input type="hidden" id="messageId" name="messageId"  value="<%=mailInfo.getMessageid() %>"></input>
473        <input type="hidden" id="uid" name="uid"  value="<%=mailInfo.getUid() %>"></input>
474        <li><input class="in"  type="text" id="mailSubject" name="mailSubject"  value="<%=mailInfo.getSubject() %>"/></li>
475        <li><input class="in" type="text" name="mailTo" id="mailTo" value="<%=mailInfo.getMsgto()==null?"":mailInfo.getMsgto().replace("\"","&quot;") %>" /></li>
476        <li class="bcc"><input class="in" type="text" id="mailBcc" name="mailBcc" value="<%=mailInfo.getMsgbcc()==null?"":mailInfo.getMsgbcc().replace("\"","&quot;") %>"/></li>
477        <li class="cc"><input class="in" type="text" id="mailCc" name="mailCc" value="<%=mailInfo.getMsgcc()==null?"":mailInfo.getMsgcc().replace("\"","&quot;") %>"/></li>
478        <%}else{%>
479        <input type="hidden" id="mailId" name="mailId"></input>
480        <input type="hidden" id="messageId" name="messageId" />
481        <input type="hidden" id="uid" name="uid" />
482            <li><input class="in"  type="text" id="mailSubject" name="mailSubject"/></li>
483        <li><input class="in" type="text" name="mailTo" id="mailTo" value="<%=msgfrom==null?"":URLDecoder.decode(msgfrom,"UTF-8") %>"/></li>
484        <li class="bcc"><input class="in" type="text" id="mailBcc" name="mailBcc"/></li>
485        <li class="cc"><input class="in" type="text" id="mailCc" name="mailCc"/></li>
486        <%} %>
487        <li class="attas">
488        </li>
489    </ul>
490 </div>
491
492 <table width="100%" height="100%" border="0">
493     <tr>
494         <td colspan="2">
495         <div id="mText"></div>
496         
497         <textarea cols="500" id="content" name="content" rows="10" >
498       
499       <% if(mailInfo!=null){ %>
500       <%=mailInfo.getBodytext().replaceAll("cid:","/mailResource.do?messageid="+mailInfo.getMessageid()+"&cid=") %>
501       <%} %>
502       </textarea>
503         <script type="text/javascript">
504     var remark_ck=CKEDITOR.replace( 'content',
505      {
506       skin : 'kama',
507       language : 'zh-cn',
508       height: '250px',
509       width:'90%'
510      });
511    </script>  
512         
513         <input type="hidden" id="mailText" name="mailText"></input>
514         </td>
515     </tr>
516 </table>
517 <script type="text/javascript">
518
519 //var remark_ck=CKEDITOR.appendTo("mText");
520 //remark_ck.setData('aaammmmmmmmmmmmmmmm');
521 //remark_ck.text="mmmmmmmmmmmmmnnbbbb";
522 <% if(mailInfo!=null){ %>
523 //remark_ck.setData('<%=mailInfo.getBodytext().replaceAll("\r|\n","\\\\r\\\\n").replaceAll("cid:","/mailResource.do?messageid="+mailInfo.getMessageid()+"&cid=") %>');
524 <%} %>
525
526 </script>
527
528 <div id="diagx" style="display: none;position: absolute;z-index:999;"></div>
529 </form>
530 </body>
531 </html>