package com.fitbank.servlet; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.io.PrintWriter; import java.text.MessageFormat; import java.util.Locale; import java.util.ResourceBundle; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.fitbank.common.MailMessage; import com.fitbank.dto.management.Detail; import com.fitbank.homebanking.DataManage; import com.fitbank.homebanking.HBParam; import com.fitbank.report.Report; import com.fitbank.report.ReportTypes; public class MailServlet extends HttpServlet{ private static final long serialVersionUID = 1L; private String path; @Override public void init(ServletConfig config) throws ServletException { path=config.getServletContext().getRealPath("/")+"/rep"; super.init(config); } @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setCharacterEncoding("iso88591"); resp.setContentType("text/html; charset=windows-1252"); resp.setHeader("Pragma", "no-cache"); resp.setHeader("Cache-Control", "no-cache"); PrintWriter out=resp.getWriter(); try{ String language = (String)req.getSession().getAttribute("i18n"); Locale locale = new Locale(language); ResourceBundle res = ResourceBundle.getBundle("i18n", locale); String text = res.getString("email.text"); String button = res.getString("buttonMail.text"); String contact = req.getParameter("contact"); if(contact!=null && contact.compareTo("true")==0){ String subject=this.getParameterName(req, "subject", HBParam.getInstance().getStringValue("mail.subject")); String content=HBParam.getInstance().getStringValue("mail.content"); String message=this.getParameterName(req, "message", HBParam.getInstance().getStringValue("mail.message")); content=MessageFormat.format(content, message); String to=req.getParameter("to"); MailMessage mm = new MailMessage(subject,content,to); mm.setTo(to); mm.send(); out.println(MessageFormat.format(HBParam.getInstance().getStringValue("mail.content"), text)); }else{ MailData data=this.prepareReport(req); String subject=this.getParameterName(req, "subject", HBParam.getInstance().getStringValue("mail.subject")); String content=HBParam.getInstance().getStringValue("mail.content"); String message=this.getParameterName(req, "message", HBParam.getInstance().getStringValue("mail.message")); content=MessageFormat.format(content, message); String to=req.getParameter("to"); System.out.println(":::::::::::::::::::::::::::::: 6"); MailMessage mm = new MailMessage(subject,content,to); System.out.println(":::::::::::::::::::::::::::::: 7"); mm.setTo(to); System.out.println(":::::::::::::::::::::::::::::: 8"); mm.addAttachment(data.getName(),data.getPath()); System.out.println(":::::::::::::::::::::::::::::: 9"); mm.send(); System.out.println(":::::::::::::::::::::::::::::: 10"); out.println("
" + text + "
"); out.println("

"); System.out.println(":::::::::::::::::::::::::::::: 11"); } }catch(Exception e){ out.println("
"+e.getMessage()+"
"); e.printStackTrace(); }finally{ out.close(); } } private String getParameterName(HttpServletRequest req,String pName,String pDefault){ String val=req.getParameter(pName); if(val==null||val.compareTo("")==0){ val=pDefault; } return val; } private MailData prepareReport(HttpServletRequest req) throws Exception{ ReportTypes rType=ReportTypes.PDF; // DataManage dm = (DataManage) req.getSession().getAttribute(DataManage.KEY); Detail detail = (Detail) req.getSession().getAttribute("repDetail");//dm.get(req.getParameter("report")); Report rep = new Report(detail, path, rType, detail.toXml()); String name = HBParam.getInstance().getStringValue("mail.name"); String pdfPath=this.path+"/"+ name +".pdf"; OutputStream out=new FileOutputStream(pdfPath); try{ rep.executeReport(out); }finally{ out.close(); } return new MailData(pdfPath, name +".pdf"); } public String getDetailKey(HttpServletRequest req){ String key= null; if(key == null){ key= DataManage.DETAIL_KEY; String paramKey=req.getParameter("_detail_"); if(paramKey!=null&¶mKey.compareTo("")!=0){ key=paramKey; }else{ paramKey=(String)req.getSession().getAttribute("_detail_"); //this.getSession().setAttribute("_detail_",""); if(paramKey!=null&¶mKey.compareTo("")!=0){ key=paramKey; } } } return key; } } class MailData{ private String path; private String name; public MailData(String pPath,String pName){ this.path=pPath; this.name=pName; } public String getPath() { return path; } public String getName() { return name; } }