Mercurial Hosting > nabble
view src/nabble/view/web/user/SendEmail.java @ 62:4674ed7d56df default tip
remove n2
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Sat, 30 Sep 2023 20:25:29 -0600 |
parents | 18cf4872fd7f |
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(); } } out.print( "\r\n<html>\r\n <head>\r\n " ); Shared.title(request,response,"Send Email to "+HtmlUtils.htmlEncode(emailDisp)); out.print( "\r\n <style type=\"text/css\">\r\n div.field-title {\r\n margin-top: 0;\r\n }\r\n </style>\r\n <script type=\"text/javascript\">\r\n $(document).ready(\r\n function() {\r\n Nabble.get(\"nabble.subject\").focus();\r\n }\r\n );\r\n </script>\r\n " ); out.print( ( Recaptcha.JS ) ); out.print( "\r\n </head>\r\n <body>\r\n " ); Shared.minHeaderGlobal(request,response); out.print( "\r\n <h1>Send Email to " ); out.print( (HtmlUtils.htmlEncode(emailDisp)) ); out.print( "</h1>\r\n\r\n " ); Shared.errorMessage(request,response,errorMsg,"Please fix the error and try again."); out.print( "\r\n <form method=\"post\">\r\n <input type=\"hidden\" name=\"type\" value=\"" ); out.print( (type) ); out.print( "\">\r\n " ); for (String name : paramNames) { out.print( "\r\n<input type=\"hidden\" name=\"" ); out.print( (name) ); out.print( "\" value=\"" ); out.print( (request.getParameter(name)) ); out.print( "\">\r\n" ); } out.print( "\r\n\r\n<div class=\"field-box light-border-color\">\r\n <div class=\"second-font field-title\">Email Subject</div>\r\n <div class=\"weak-color\">\r\n <input name=\"subject\" id=\"nabble.subject\" size=\"70\" value=\"" ); out.print( (Jtp.hideNull(subject)) ); out.print( "\" tabindex=\"1\">\r\n </div>\r\n</div>\r\n\r\n<div class=\"field-box light-border-color\">\r\n <div class=\"second-font field-title\">Message</div>\r\n <div class=\"weak-color\">\r\n <textarea style=\"width:40em; height: 150px;\" name=\"message\" wrap=\"SOFT\" tabindex=\"2\">" ); out.print( (HtmlUtils.htmlEncode(Jtp.hideNull(message))) ); out.print( "</textarea>\r\n </div>\r\n</div>\r\n\r\n<table style=\"margin-bottom:1em\">\r\n <tr>\r\n <td><input id=\"cc\" type=\"checkbox\" name=\"cc\" value=\"y\" /></td>\r\n <td><label for=\"cc\">Send a copy of this message to me</label></td>\r\n </tr>\r\n</table>\r\n\r\n" ); out.print( ( Recaptcha.DIV ) ); out.print( "<br>\r\n\r\n<input type=\"submit\" name=\"send\" value=\"Send Email\" />\r\n</form>\r\n\r\n" ); Shared.returnToJs(request,response); out.print( "\r\n\r\n" ); Shared.footer(request,response); out.print( "\r\n" ); Shared.analytics(request,response); out.print( "\r\n</body>\r\n</html>\r\n" ); } }