Mercurial Hosting > nabble
comparison src/nabble/view/web/user/SendEmail.jtp @ 0:7ecd1a4ef557
add content
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Thu, 21 Mar 2019 19:15:52 -0600 |
parents | |
children | e79c7d4dcd7a |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:7ecd1a4ef557 |
---|---|
1 <% | |
2 package nabble.view.web.user; | |
3 | |
4 import fschmidt.util.java.HtmlUtils; | |
5 import fschmidt.util.mail.Mail; | |
6 import fschmidt.util.mail.MailAddress; | |
7 import fschmidt.util.mail.MailException; | |
8 import fschmidt.util.mail.MailHome; | |
9 import fschmidt.util.mail.PlainTextContent; | |
10 import nabble.model.Message; | |
11 import nabble.model.ModelException; | |
12 import nabble.model.ModelHome; | |
13 import nabble.model.Node; | |
14 import nabble.model.Site; | |
15 import nabble.model.User; | |
16 import nabble.view.lib.Jtp; | |
17 import nabble.view.lib.Shared; | |
18 import nabble.view.lib.Recaptcha; | |
19 import org.slf4j.Logger; | |
20 import org.slf4j.LoggerFactory; | |
21 | |
22 import javax.servlet.ServletException; | |
23 import javax.servlet.http.HttpServlet; | |
24 import javax.servlet.http.HttpServletRequest; | |
25 import javax.servlet.http.HttpServletResponse; | |
26 import java.io.IOException; | |
27 import java.io.PrintWriter; | |
28 import java.util.HashSet; | |
29 import java.util.Set; | |
30 | |
31 | |
32 public final class SendEmail extends HttpServlet { | |
33 private static final Logger logger = LoggerFactory.getLogger(SendEmail.class); | |
34 | |
35 protected void service(HttpServletRequest request,HttpServletResponse response) | |
36 throws ServletException, IOException | |
37 { | |
38 PrintWriter out = response.getWriter(); | |
39 User user = Jtp.getUser(request,response); | |
40 if( user==null ) { | |
41 Jtp.login("You must login to send an email.",request,response); | |
42 return; | |
43 } | |
44 String type = request.getParameter("type"); | |
45 String emailTo; | |
46 String emailDisp; | |
47 String subject = request.getParameter("subject"); | |
48 String message = request.getParameter("message"); | |
49 Set<String> paramNames = new HashSet<String>(); | |
50 if( type.equals("email") ) { | |
51 emailTo = request.getParameter("email"); | |
52 emailDisp = ModelHome.hideEmail(emailTo); | |
53 paramNames.add("email"); | |
54 } else if( type.equals("user") ) { | |
55 User to = Jtp.getSite(request).getUser(Long.parseLong(request.getParameter("user"))); | |
56 emailTo = to.getEmail(); | |
57 emailDisp = to.getName(); | |
58 paramNames.add("user"); | |
59 } else if( type.equals("node") ) { | |
60 Node node = Jtp.getSiteNotNull(request).getNode(Long.parseLong(request.getParameter("node"))); | |
61 int i = Integer.parseInt(request.getParameter("i")); | |
62 emailTo = node.getMessage().getEmail(i); | |
63 emailDisp = ModelHome.hideEmail(emailTo); | |
64 paramNames.add("node"); | |
65 paramNames.add("i"); | |
66 } else if( type.equals("sig") ) { | |
67 User to = Jtp.getSite(request).getUser(Long.parseLong(request.getParameter("user"))); | |
68 int i = Integer.parseInt(request.getParameter("i")); | |
69 emailTo = to.getSignature().getEmail(i); | |
70 emailDisp = ModelHome.hideEmail(emailTo); | |
71 paramNames.add("user"); | |
72 paramNames.add("i"); | |
73 } else if( type.equals("pm") ) { | |
74 Node post = Jtp.getSiteNotNull(request).getNode(Long.parseLong(request.getParameter("post"))); | |
75 User to = (User)post.getOwner(); | |
76 emailTo = to.getEmail(); | |
77 emailDisp = to.getName(); | |
78 if( subject==null ) { | |
79 subject = post.getSubject(); | |
80 String original = | |
81 "\n<quote author='" + post.getOwner().getNameHtml() + "'>\n" | |
82 + post.getMessage().getText() + "\n" | |
83 + "</quote>\n" | |
84 + "Quoted from: " + Jtp.url(post) + "\n" | |
85 ; | |
86 message = Message.wrapQuoteText(original); | |
87 } | |
88 paramNames.add("post"); | |
89 } else { | |
90 throw new RuntimeException("type="+type); | |
91 } | |
92 String errorMsg = null; | |
93 | |
94 if( request.getParameter("send") != null && "POST".equals(request.getMethod()) ) { | |
95 try { | |
96 Recaptcha.check(request); | |
97 | |
98 Site site = Jtp.getSite(request); | |
99 if (site != null) { | |
100 message += "\n\n_____________________________________\nSent from " + site.getBaseUrl() + "\n\n"; | |
101 } | |
102 | |
103 Mail mail = MailHome.newMail(); | |
104 mail.setFrom( new MailAddress(user.getEmail()) ); | |
105 mail.setTo( new MailAddress(emailTo) ); | |
106 mail.setSubject(subject); | |
107 mail.setContent( new PlainTextContent(message) ); | |
108 ModelHome.send(mail); | |
109 if( request.getParameter("cc") != null ) { | |
110 mail = MailHome.newMail(); | |
111 mail.setFrom( new MailAddress(user.getEmail()) ); | |
112 mail.setTo( new MailAddress(user.getEmail()) ); | |
113 mail.setSubject(subject); | |
114 mail.setContent( new PlainTextContent(message) ); | |
115 ModelHome.send(mail); | |
116 } | |
117 logger.info( | |
118 "From: " + user.getEmail() + " (user ID=" + user.getId() + ")\n" + | |
119 "To: " + emailTo + '\n' + | |
120 "Subject: " + subject + '\n' + message + | |
121 "\n------------------------------------------------------------\n" | |
122 ); | |
123 response.sendRedirect("SendEmail2.jtp?to=" + HtmlUtils.urlEncode(emailDisp)); | |
124 return; | |
125 } catch(MailException e) { | |
126 logger.warn("",e); | |
127 errorMsg = e.getMessage(); | |
128 } catch (ModelException.InvalidRecaptcha e) { | |
129 logger.warn("",e); | |
130 errorMsg = e.getMessage(); | |
131 } | |
132 } | |
133 %> | |
134 <html> | |
135 <head> | |
136 <% Shared.title(request,response,"Send Email to "+HtmlUtils.htmlEncode(emailDisp)); %> | |
137 <style type="text/css"> | |
138 div.field-title { | |
139 margin-top: 0; | |
140 } | |
141 </style> | |
142 <script type="text/javascript"> | |
143 $(document).ready( | |
144 function() { | |
145 Nabble.get("nabble.subject").focus(); | |
146 } | |
147 ); | |
148 </script> | |
149 <%= Recaptcha.JS %> | |
150 </head> | |
151 <body> | |
152 <% Shared.minHeaderGlobal(request,response); %> | |
153 <h1>Send Email to <%=HtmlUtils.htmlEncode(emailDisp)%></h1> | |
154 | |
155 <% Shared.errorMessage(request,response,errorMsg,"Please fix the error and try again.");%> | |
156 <form method="post"> | |
157 <input type="hidden" name="type" value="<%=type%>"> | |
158 <% | |
159 for (String name : paramNames) { | |
160 %> | |
161 <input type="hidden" name="<%=name%>" value="<%=request.getParameter(name)%>"> | |
162 <% | |
163 } | |
164 %> | |
165 | |
166 <div class="field-box light-border-color"> | |
167 <div class="second-font field-title">Email Subject</div> | |
168 <div class="weak-color"> | |
169 <input name="subject" id="nabble.subject" size="70" value="<%=Jtp.hideNull(subject)%>" tabindex="1"> | |
170 </div> | |
171 </div> | |
172 | |
173 <div class="field-box light-border-color"> | |
174 <div class="second-font field-title">Message</div> | |
175 <div class="weak-color"> | |
176 <textarea style="width:40em; height: 150px;" name="message" wrap="SOFT" tabindex="2"><%=HtmlUtils.htmlEncode(Jtp.hideNull(message))%></textarea> | |
177 </div> | |
178 </div> | |
179 | |
180 <table style="margin-bottom:1em"> | |
181 <tr> | |
182 <td><input id="cc" type="checkbox" name="cc" value="y" /></td> | |
183 <td><label for="cc">Send a copy of this message to me</label></td> | |
184 </tr> | |
185 </table> | |
186 | |
187 <%= Recaptcha.DIV %><br> | |
188 | |
189 <input type="submit" name="send" value="Send Email" /> | |
190 </form> | |
191 | |
192 <% Shared.returnToJs(request,response); %> | |
193 | |
194 <% Shared.footer(request,response); %> | |
195 <% Shared.analytics(request,response); %> | |
196 </body> | |
197 </html> | |
198 <% | |
199 } | |
200 } | |
201 %> |