+ /*\r
+ * Method for preparing and sending a content as an email message\r
+ */\r
+ \r
+ public void mail(HttpServletRequest req, HttpServletResponse res)\r
+ throws ServletModuleException, ServletModuleUserException {\r
+ String aid = req.getParameter("mail_aid");\r
+ if (aid == null){\r
+ throw new ServletModuleUserException("An article id must be specified in requests to email an article. Something therefore went badly wrong....");\r
+ }\r
+ \r
+ String to = req.getParameter("mail_to");\r
+ String from = req.getParameter("mail_from");\r
+ String from_name = req.getParameter("mail_from_name");\r
+ String comment = req.getParameter("mail_comment");\r
+ String mail_language = req.getParameter("mail_language");\r
+ \r
+ SimpleHash mergeData = new SimpleHash();\r
+ \r
+ if (to == null || from == null || from_name == null|| to.equals("") || from.equals("") || from_name.equals("") || mail_language == null || mail_language.equals("")){\r
+\r
+ for (Enumeration theParams = req.getParameterNames(); theParams.hasMoreElements() ;) {\r
+ String pName=(String)theParams.nextElement();\r
+ if (pName.startsWith("mail_")){\r
+ mergeData.put(pName,new SimpleScalar(req.getParameter(pName)));\r
+ }\r
+ }\r
+ deliver(req,res,mergeData,prepareMailTemplate); \r
+ }\r
+ else {\r
+ //run checks on to and from and mail_language to make sure no monkey business occurring\r
+ if (mail_language.indexOf('.') != -1 || mail_language.indexOf('/') != -1 ){\r
+ throw new ServletModuleUserException("Sorry, you've entered an illegal character into the language field. Go back and try again, asshole.");\r
+ }\r
+ if (to.indexOf('\n') != -1 \r
+ || to.indexOf('\r') != -1 \r
+ || to.indexOf(',') != -1 \r
+ || from.indexOf('\n') != -1 \r
+ || from.indexOf('\r') != -1 \r
+ || from.indexOf(',') != -1 ){\r
+ throw new ServletModuleUserException("Sorry, you've entered an illegal character into the from or to field. Go back and try again.");\r
+ }\r
+ EntityContent contentEnt;\r
+ try{\r
+ contentEnt = (EntityContent)contentModule.getById(aid);\r
+ }\r
+ catch (ModuleException e){ \r
+ throw new ServletModuleUserException("Couldn't get content for article "+aid);\r
+ }\r
+ String producerStorageRoot=MirConfig.getProp("Producer.StorageRoot");\r
+ String producerDocRoot=MirConfig.getProp("Producer.DocRoot");\r
+ String publishPath = contentEnt.getValue("publish_path");\r
+ String txtFilePath = producerStorageRoot + producerDocRoot + "/" + mail_language + \r
+ publishPath + "/" + aid + ".txt";\r
+ \r
+\r
+ File inputFile = new File(txtFilePath);\r
+ String content;\r
+ \r
+ try{\r
+ FileReader in = new FileReader(inputFile);\r
+ StringWriter out = new StringWriter();\r
+ int c;\r
+ while ((c = in.read()) != -1)\r
+ out.write(c);\r
+ in.close();\r
+ content= out.toString();\r
+ }\r
+ catch (FileNotFoundException e){\r
+ throw new ServletModuleUserException("No text file found in " + txtFilePath);\r
+ }\r
+ catch (IOException e){\r
+ throw new ServletModuleUserException("Problem reading file in " + txtFilePath);\r
+ }\r
+ // add some headers\r
+ content = "To: " + to + "\nReply-To: "+ from + "\n" + content;\r
+ // put in the comment where it should go\r
+ if (comment != null) { \r
+ String commentTextToInsert = "\n\nAttached comment from " + from_name + ":\n" + comment;\r
+ try {\r
+ content=StringRoutines.performRegularExpressionReplacement(content,"!COMMENT!",commentTextToInsert);\r
+ }\r
+ catch (Exception e){\r
+ throw new ServletModuleUserException("Problem doing regular expression replacement " + e.toString());\r
+ }\r
+ }\r
+ else{\r
+ try {\r
+ content=StringRoutines.performRegularExpressionReplacement(content,"!COMMENT!","");\r
+ }\r
+ catch (Exception e){\r
+ throw new ServletModuleUserException("Problem doing regular expression replacement " + e.toString());\r
+ }\r
+ }\r
+ \r
+ SMTPClient client=new SMTPClient();\r
+ try {\r
+ int reply;\r
+ client.connect("localhost");\r
+ System.out.print(client.getReplyString());\r
+ \r
+ reply = client.getReplyCode();\r
+ \r
+ if(!SMTPReply.isPositiveCompletion(reply)) {\r
+ client.disconnect();\r
+ throw new ServletModuleUserException("SMTP server refused connection.");\r
+ }\r
+ \r
+ client.sendSimpleMessage(MirConfig.getProp("ServletModule.OpenIndy.EmailIsFrom"),to,content);\r
+ \r
+ client.disconnect();\r
+ //mission accomplished\r
+ deliver(req,res,mergeData,sentMailTemplate); \r
+\r
+ } catch(IOException e) {\r
+ if(client.isConnected()) {\r
+ try {\r
+ client.disconnect();\r
+ } catch(IOException f) {\r
+ // do nothing\r
+ }\r
+ }\r
+ throw new ServletModuleUserException(e.toString());\r
+ }\r
+ }\r
+ }\r
+\r
+\r