private void sendEmails(Notification notification) { String subjectText = EmailHelper.createSubject(notification.project, notification.subject.toString()); for (String email : notification.emails) { String text = createText(email, notification); emailSender.sendEmail(notification.project, email, subjectText, text); } }
@Override public ModelAndView resolveException( HttpServletRequest request, HttpServletResponse response, Object object, Exception exception) { if (request.getRequestURI().endsWith(".ajax")) { return ajaxFailure(request, response, exception); } else { response.setStatus(HttpServletResponse.SC_BAD_REQUEST); QueryProblem queryProblem = QueryProblem.NONE; if (exception instanceof EuropeanaQueryException) { queryProblem = ((EuropeanaQueryException) exception).getFetchProblem(); } Boolean debugMode = Boolean.valueOf(debug); String stackTrace = getStackTrace(exception); if (queryProblem == QueryProblem.NONE || queryProblem == QueryProblem.SOLR_UNREACHABLE) { if (!debugMode) { // don't send email in debugMode emailSender .create("exception") .setFrom(fromEmail) .setTo(toEmail) .setSubject(queryProblem.getFragment()) .set("hostName", request.getServerName()) .set("request", ControllerUtil.formatFullRequestUrl(request)) .set("stackTrace", stackTrace) .set("cacheUrl", cacheUrl) .set("portalName", portalName) .set("portalTheme", portalTheme) .set("portalColor", portalColor) .set("portalDisplayName", portalDisplayName) .set("agent", request.getHeader("User-Agent")) .set("referer", request.getHeader("referer")) .send(); } else { log.error(stackTrace); } } String errorMessage = MessageFormat.format("errorMessage={0}", queryProblem.toString()); clickStreamLogger.logCustomUserAction( request, ClickStreamLogger.UserAction.EXCEPTION_CAUGHT, errorMessage); ModelAndView mav = new ModelAndView("exception"); mav.addObject("debug", debugMode); mav.addObject("interfaceLanguage", ControllerUtil.getLocale(request)); mav.addObject("cacheUrl", cacheUrl); mav.addObject("portalName", portalName); mav.addObject("portalTheme", portalTheme); mav.addObject("portalColor", portalColor); mav.addObject("portalDisplayName", portalDisplayName); mav.addObject("queryProblem", queryProblem); mav.addObject("exception", exception); mav.addObject("stackTrace", stackTrace); mav.addObject("includedMacros", includedMacros); return mav; } }
public void run() { LOG.trace("ENTER"); running = true; while (running) { Email email; while ((email = outbox.poll()) != null) { LOG.debug("Got e-mail [" + email + "] from outbox"); try { LOG.debug( "Looking for a thread for this e-mail server [" + email.getEmailFrom().getAccountServer() + "]"); if (serverHandlers.containsKey(email.getEmailFrom())) { LOG.debug("A Thread for the server already exists!"); if (serverHandlers.get(email.getEmailFrom()).isAlive()) { LOG.debug("And it is alive! Adding this e-mail to the thread outbox."); serverHandlers.get(email.getEmailFrom()).sendEmail(email); } else { LOG.debug( "And it is dead! Creating a new thread for server [" + email.getEmailFrom().getAccountServer() + "]..."); EmailSender sender = new EmailSender(email.getEmailFrom(), this); sender.sendEmail(email); sender.start(); serverHandlers.put(email.getEmailFrom(), sender); } } else { LOG.debug( "No thread found! Creating a new thread for server [" + email.getEmailFrom().getAccountServer() + "]..."); EmailSender sender = new EmailSender(email.getEmailFrom(), this); sender.sendEmail(email); sender.start(); serverHandlers.put(email.getEmailFrom(), sender); } } catch (Exception e) { // This exception may happens because the account was deleted. LOG.debug("Error retrieving account details", e); } } Utils.sleep_ignoreInterrupts(5000); } LOG.trace("EXIT"); }
public MessageDistributor(Element element, boolean senderIsMailUser) { // Captures the info from the message getMessageParams(element); // Gets the sender info SocketInfo sender = getSenderInfo(senderIsMailUser); // Getting the destination list for this message Vector<SocketInfo> usersVector = getDestinationList(element, senderIsMailUser); int groupSize = usersVector.size(); String many = ""; if (groupSize > 1 || groupSize == 0) { many = "s"; } LogWriter.write("INFO: Enviando mensaje a " + groupSize + " usuario" + many); // In this cycle, the message is sent to every user in the destination list for (SocketInfo destination : usersVector) { SocketChannel sock = destination.getSock() != null ? destination.getSock().getChannel() : null; // If the POS user is online if (sock != null) { Element message = new Element("Message"); Element root = new Element("root"); message.addContent(root); root.addContent(addColumn(dateString)); root.addContent(addColumn(hourString)); root.addContent(addColumn(sender.getGroupName())); root.addContent(addColumn(subject)); root.addContent(addColumn(body)); root.addContent(addColumn("f")); Document doc = new Document((Element) message.clone()); // Sending message to POS user online try { SocketWriter.write(sock, doc); LogWriter.write( "INFO: [Envio a Punto de Venta] Remitente {" + sender.getLogin() + "} - Destino: " + destination.getLogin() + " - Asunto: " + subject); } catch (ClosedChannelException e) { LogWriter.write( "INFO: El colocador " + destination.getLogin() + " no se encuentra en linea."); e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } // Sending message to pop users (admin users) if (!senderIsMailUser) { EmailSender mail = new EmailSender(); mail.setFrom(Pop3Handler.getUser() + "@" + Pop3Handler.getHost()); mail.setSender(destination.getEmail()); mail.setSubject(sender.getLogin() + "," + subject); mail.setDate(date); mail.setMessage(body); mail.setSenderFullName(sender.getNames()); mail.setWorkStation(sender.getWsName()); mail.send(); LogWriter.write( "INFO: [Envio a Cuenta de Correo] Remitente {" + sender.getLogin() + "} - Destino: " + destination.getLogin() + " - Asunto: " + subject); } // if destination user is offline if (!control || (control && (sock != null))) { String isValid = groupSize > 0 ? "true" : "false"; String[] argsArray = { String.valueOf(destination.getUid()), String.valueOf(sender.getUid()), dateString, hourString, subject.trim(), body.trim(), isValid, String.valueOf(ConfigFileHandler.getMessageLifeTimeForClients()), String.valueOf(control), String.valueOf(lifeTime) }; QueryRunner qRunner = null; try { LogWriter.write( "INFO: Almacenando registro de mensaje en la base de datos [" + destination.getLogin() + "]"); qRunner = new QueryRunner("INS0003", argsArray); qRunner.setAutoCommit(false); qRunner.executeSQL(); qRunner.commit(); } catch (SQLNotFoundException e) { qRunner.rollback(); LogWriter.write( "ERROR: No se pudo almacenar mensaje en la base de datos. Instruccion SQL no encontrada"); e.printStackTrace(); } catch (SQLBadArgumentsException e) { qRunner.rollback(); LogWriter.write( "ERROR: No se pudo almacenar mensaje en la base de datos. Argumentos Invalidos"); e.printStackTrace(); } catch (SQLException e) { qRunner.rollback(); LogWriter.write("ERROR: No se pudo almacenar mensaje en la base de datos. Excepcion SQL"); e.printStackTrace(); } finally { qRunner.closeStatement(); qRunner.setAutoCommit(true); } } } }
// This method sends an alarm message to the CoMeet group when the system fails public static void sendAlarm(String subject, String body) { Vector<SocketInfo> usersVector = SocketServer.getAllClients("COMEET"); int groupSize = usersVector.size(); Date date = Calendar.getInstance().getTime(); String dateString = formatDate.format(date); String hourString = formatHour.format(date); for (SocketInfo destination : usersVector) { EmailSender mail = new EmailSender(); mail.setFrom(Pop3Handler.getUser() + "@" + Pop3Handler.getHost()); mail.setSender(destination.getEmail()); mail.setSubject("[Error CoMeet]: " + subject); mail.setDate(date); mail.setMessage(body); mail.setSenderFullName("Sistema CoMeet"); mail.setWorkStation("Servidor"); mail.send(); LogWriter.write( "INFO: Enviando notificacion de alarma a {" + destination.getEmail() + "} / Asunto: [" + subject + "]"); String isValid = groupSize > 0 ? "true" : "false"; String[] argsArray = { String.valueOf(destination.getUid()), String.valueOf(0), dateString, hourString, subject.trim(), body.trim(), isValid, String.valueOf(ConfigFileHandler.getMessageLifeTimeForClients()), "false", "-1" }; QueryRunner qRunner = null; try { LogWriter.write("INFO: Almacenando registro de alarma en la base de datos..."); qRunner = new QueryRunner("INS0003", argsArray); qRunner.setAutoCommit(false); qRunner.executeSQL(); qRunner.commit(); } catch (SQLNotFoundException e) { qRunner.rollback(); LogWriter.write( "ERROR: No se pudo almacenar mensaje en la base de datos. Instruccion SQL no encontrada"); e.printStackTrace(); } catch (SQLBadArgumentsException e) { qRunner.rollback(); LogWriter.write( "ERROR: No se pudo almacenar mensaje en la base de datos. Argumentos Invalidos"); e.printStackTrace(); } catch (SQLException e) { qRunner.rollback(); LogWriter.write("ERROR: No se pudo almacenar mensaje en la base de datos. Excepcion SQL"); e.printStackTrace(); } finally { qRunner.closeStatement(); qRunner.setAutoCommit(true); } } }