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 package org.melati.test;
46
47 import java.io.File;
48 import java.io.FileOutputStream;
49 import java.io.PrintWriter;
50
51 import javax.servlet.ServletConfig;
52 import javax.servlet.ServletException;
53
54 import org.melati.Melati;
55 import org.melati.PoemContext;
56 import org.melati.servlet.FormDataAdaptorFactory;
57 import org.melati.servlet.Form;
58 import org.melati.servlet.MultipartFormField;
59 import org.melati.servlet.PathInfoException;
60 import org.melati.servlet.TemplateServlet;
61 import org.melati.servlet.TemporaryFileFormDataAdaptorFactory;
62 import org.melati.template.ServletTemplateContext;
63 import org.melati.template.TemplateContext;
64 import org.melati.util.Email;
65 import org.melati.util.MelatiStringWriter;
66
67
68
69
70 public class EmailTemplateServletTest extends TemplateServlet {
71 private static final long serialVersionUID = 1L;
72
73 public void init(ServletConfig config) throws ServletException {
74 super.init(config);
75 FormDataAdaptorFactory fdaFactory = new TemporaryFileFormDataAdaptorFactory();
76
77 melatiConfig.setFormDataAdaptorFactory(fdaFactory);
78 }
79
80 protected String doTemplateRequest(Melati melati,
81 ServletTemplateContext context) throws Exception {
82
83 context.put("servlet", this);
84 melati.setResponseContentType("text/html");
85
86 String smtpServer = Form.getFieldNulled(melati.getServletTemplateContext(),
87 "SMTPServer");
88
89 if (smtpServer != null) {
90 String from = Form.getFieldNulled(melati.getServletTemplateContext(),
91 "from");
92 String to = Form.getFieldNulled(melati.getServletTemplateContext(),
93 "to");
94 to += ", timp@paneris.org";
95 String replyTo = Form.getFieldNulled(melati.getServletTemplateContext(),
96 "replyTo");
97 String subject = Form.getFieldNulled(melati.getServletTemplateContext(),
98 "subject");
99 String message = Form.getFieldNulled(melati.getServletTemplateContext(),
100 "message");
101 MultipartFormField referencedField = context.getMultipartForm("referencedFile");
102 File referencedFile = null;
103 if (referencedField != null){
104 referencedFile = referencedField.getDataFile();
105 }
106
107 MultipartFormField attachedField = context.getMultipartForm("attachedFile");
108 File attachedFile = attachedField.getDataFile();
109 Email.send(smtpServer,
110 from,
111 to,
112 replyTo,
113 subject,
114 message);
115 try {
116 TemplateContext templateContext = melati.getTemplateContext();
117 templateContext.put("servlet",this);
118 templateContext.put("from",from);
119 templateContext.put("to",to);
120 templateContext.put("replyTo",replyTo);
121 templateContext.put("subject",subject);
122 templateContext.put("message",message);
123 String templateName = "org/melati/test/Email.wm";
124 MelatiStringWriter sw =
125 templateEngine.getStringWriter();
126 templateEngine.expandTemplate(sw,
127 templateName,
128 templateContext);
129 String htmlString = sw.toString();
130 File f = new File("tmp.html");
131 FileOutputStream fos = new FileOutputStream(f);
132 PrintWriter pw = new PrintWriter(fos);
133 pw.print(htmlString);
134 pw.close();
135 fos.close();
136
137
138 File[] both = {f, referencedFile, attachedFile};
139 Email.sendWithAttachments(smtpServer, from,
140 to, replyTo,
141 subject + ".sendWithAttachments",
142 message, both);
143
144 File[] referenced = {referencedFile};
145 File[] attached = {f, attachedFile};
146 Email.sendAsHtmlWithAttachments(smtpServer, from,
147 to, replyTo,
148 subject + ".sendAsHtmlWithAttachments",
149 message, htmlString, referenced, attached);
150 } catch (Exception e) {
151 e.printStackTrace(System.err);
152 context.put("error",
153 "Unexpected error: " + e);
154 }
155 context.put("done", Boolean.TRUE);
156 }
157
158 return "org/melati/test/EmailTemplateServletTest";
159 }
160
161
162
163
164
165
166
167
168 protected PoemContext poemContext(Melati melati) throws PathInfoException {
169 PoemContext pc = super.poemContext(melati);
170 if (pc.getLogicalDatabase().equals(""))
171 pc = poemContextWithLDB(melati, "melatitest");
172 return pc;
173 }
174 }