Mercurial Hosting > nabble
view src/nabble/view/web/user/SendEmail.jtp @ 19:18cf4872fd7f
remove anonymous posting
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Fri, 29 May 2020 22:58:25 -0600 |
parents | e79c7d4dcd7a |
children |
line wrap: on
line source
<% package nabble.view.web.user; import fschmidt.util.java.HtmlUtils; import fschmidt.util.mail.Mail; import fschmidt.util.mail.MailAddress; import fschmidt.util.mail.MailException; import fschmidt.util.mail.MailHome; import fschmidt.util.mail.PlainTextContent; import nabble.model.Message; import nabble.model.ModelException; import nabble.model.ModelHome; import nabble.model.Node; import nabble.model.Site; import nabble.model.User; import nabble.view.lib.Jtp; import nabble.view.lib.Shared; import nabble.view.lib.Recaptcha; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; import java.util.HashSet; import java.util.Set; public final class SendEmail extends HttpServlet { private static final Logger logger = LoggerFactory.getLogger(SendEmail.class); protected void service(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException { PrintWriter out = response.getWriter(); User user = Jtp.getUser(request); if( user==null ) { Jtp.login("You must login to send an email.",request,response); return; } String type = request.getParameter("type"); String emailTo; String emailDisp; String subject = request.getParameter("subject"); String message = request.getParameter("message"); Set<String> paramNames = new HashSet<String>(); if( type.equals("email") ) { emailTo = request.getParameter("email"); emailDisp = ModelHome.hideEmail(emailTo); paramNames.add("email"); } else if( type.equals("user") ) { User to = Jtp.getSite(request).getUser(Long.parseLong(request.getParameter("user"))); emailTo = to.getEmail(); emailDisp = to.getName(); paramNames.add("user"); } else if( type.equals("node") ) { Node node = Jtp.getSiteNotNull(request).getNode(Long.parseLong(request.getParameter("node"))); int i = Integer.parseInt(request.getParameter("i")); emailTo = node.getMessage().getEmail(i); emailDisp = ModelHome.hideEmail(emailTo); paramNames.add("node"); paramNames.add("i"); } else if( type.equals("sig") ) { User to = Jtp.getSite(request).getUser(Long.parseLong(request.getParameter("user"))); int i = Integer.parseInt(request.getParameter("i")); emailTo = to.getSignature().getEmail(i); emailDisp = ModelHome.hideEmail(emailTo); paramNames.add("user"); paramNames.add("i"); } else if( type.equals("pm") ) { Node post = Jtp.getSiteNotNull(request).getNode(Long.parseLong(request.getParameter("post"))); User to = (User)post.getOwner(); emailTo = to.getEmail(); emailDisp = to.getName(); if( subject==null ) { subject = post.getSubject(); String original = "\n<quote author='" + post.getOwner().getNameHtml() + "'>\n" + post.getMessage().getText() + "\n" + "</quote>\n" + "Quoted from: " + Jtp.url(post) + "\n" ; message = Message.wrapQuoteText(original); } paramNames.add("post"); } else { throw new RuntimeException("type="+type); } String errorMsg = null; if( request.getParameter("send") != null && "POST".equals(request.getMethod()) ) { try { Recaptcha.check(request); Site site = Jtp.getSite(request); if (site != null) { message += "\n\n_____________________________________\nSent from " + Jtp.getBaseUrl(request) + "\n\n"; } Mail mail = MailHome.newMail(); mail.setFrom( new MailAddress(user.getEmail()) ); mail.setTo( new MailAddress(emailTo) ); mail.setSubject(subject); mail.setContent( new PlainTextContent(message) ); ModelHome.send(mail); if( request.getParameter("cc") != null ) { mail = MailHome.newMail(); mail.setFrom( new MailAddress(user.getEmail()) ); mail.setTo( new MailAddress(user.getEmail()) ); mail.setSubject(subject); mail.setContent( new PlainTextContent(message) ); ModelHome.send(mail); } logger.info( "From: " + user.getEmail() + " (user ID=" + user.getId() + ")\n" + "To: " + emailTo + '\n' + "Subject: " + subject + '\n' + message + "\n------------------------------------------------------------\n" ); response.sendRedirect("SendEmail2.jtp?to=" + HtmlUtils.urlEncode(emailDisp)); return; } catch(MailException e) { logger.warn("",e); errorMsg = e.getMessage(); } catch (ModelException.InvalidRecaptcha e) { logger.warn("",e); errorMsg = e.getMessage(); } } %> <html> <head> <% Shared.title(request,response,"Send Email to "+HtmlUtils.htmlEncode(emailDisp)); %> <style type="text/css"> div.field-title { margin-top: 0; } </style> <script type="text/javascript"> $(document).ready( function() { Nabble.get("nabble.subject").focus(); } ); </script> <%= Recaptcha.JS %> </head> <body> <% Shared.minHeaderGlobal(request,response); %> <h1>Send Email to <%=HtmlUtils.htmlEncode(emailDisp)%></h1> <% Shared.errorMessage(request,response,errorMsg,"Please fix the error and try again.");%> <form method="post"> <input type="hidden" name="type" value="<%=type%>"> <% for (String name : paramNames) { %> <input type="hidden" name="<%=name%>" value="<%=request.getParameter(name)%>"> <% } %> <div class="field-box light-border-color"> <div class="second-font field-title">Email Subject</div> <div class="weak-color"> <input name="subject" id="nabble.subject" size="70" value="<%=Jtp.hideNull(subject)%>" tabindex="1"> </div> </div> <div class="field-box light-border-color"> <div class="second-font field-title">Message</div> <div class="weak-color"> <textarea style="width:40em; height: 150px;" name="message" wrap="SOFT" tabindex="2"><%=HtmlUtils.htmlEncode(Jtp.hideNull(message))%></textarea> </div> </div> <table style="margin-bottom:1em"> <tr> <td><input id="cc" type="checkbox" name="cc" value="y" /></td> <td><label for="cc">Send a copy of this message to me</label></td> </tr> </table> <%= Recaptcha.DIV %><br> <input type="submit" name="send" value="Send Email" /> </form> <% Shared.returnToJs(request,response); %> <% Shared.footer(request,response); %> <% Shared.analytics(request,response); %> </body> </html> <% } } %>