From a88c2787bb21ad59b2ac63c30ea50417c438bb98 Mon Sep 17 00:00:00 2001 From: Nicolas Micoud <58596990+nmicoud@users.noreply.github.com> Date: Fri, 8 Mar 2024 12:58:50 +0100 Subject: [PATCH 1/2] IDEMPIERE-6063: Customization of email sent when server starts WIP --- .../src/org/compiere/util/WebEnv.java | 61 +++++++++++++++++-- 1 file changed, 56 insertions(+), 5 deletions(-) diff --git a/org.adempiere.base/src/org/compiere/util/WebEnv.java b/org.adempiere.base/src/org/compiere/util/WebEnv.java index a4e10302f7..03cbe36c90 100644 --- a/org.adempiere.base/src/org/compiere/util/WebEnv.java +++ b/org.adempiere.base/src/org/compiere/util/WebEnv.java @@ -17,6 +17,8 @@ package org.compiere.util; import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; import java.sql.Timestamp; import java.util.Enumeration; import java.util.Properties; @@ -186,15 +188,64 @@ public static boolean initWeb (ServletContext context) // Logging now initiated if (log.isLoggable(Level.INFO)) log.info(info.toString()); // - MClient client = MClient.get(Env.getCtx(), 0); - MSystem system = MSystem.get(Env.getCtx()); - client.sendEMail(client.getRequestEMail(), - "Server started: " + system.getName() + " (" + WebUtil.getServerName() + ")", - "ServerInfo: " + context.getServerInfo(), null); + + serverStartEMail(context); return s_initOK; } // initWeb + /* + * Send an email when the server starts + * @param context servlet context + */ + private static void serverStartEMail(ServletContext context) { + + File file = new File (Adempiere.getAdempiereHome() + File.separator + "ServerStartEMail.properties"); + System.out.println(file.getAbsolutePath()); + Properties props = new Properties(); + boolean mailSent = false; + + MClient client = MClient.get(Env.getCtx(), 0); + MSystem system = MSystem.get(Env.getCtx()); + + if (file.exists() && file.isFile() && file.canRead()) { + FileInputStream fis = null; + try { + fis = new FileInputStream(file); + props.load(fis); + + String recipient = props.getProperty("recipient"); + if (Util.isEmpty(recipient) || !EMail.validate(recipient)) + recipient = client.getRequestEMail(); + + String subject = props.getProperty("subject"); + subject = subject.replace("#SYSTEM_NAME#", system.getName()); + subject = subject.replace("#SERVER_NAME#", WebUtil.getServerName()); + + String message = props.getProperty("message"); + message = message.replace("#SERVER_INFO#", context.getServerInfo()); + message = message.replace("#ADEMPIERE_VERSION#", Adempiere.getVersion()); + + client.sendEMail(recipient, subject, message, null); + + mailSent = true; + + } catch (Exception e) { + log.warning("Can't send customized email when server starts: " + e.toString()); + } finally { + try { + fis.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + + if (!mailSent) + client.sendEMail(client.getRequestEMail(), + "Server started: " + system.getName() + " (" + WebUtil.getServerName() + ")", + "ServerInfo: " + context.getServerInfo(), null); + } /************************************************************************** * Get Base Directory entry. From 80cb07a4871faa18746747bed4c5b50375ccccf1 Mon Sep 17 00:00:00 2001 From: Nicolas Micoud <58596990+nmicoud@users.noreply.github.com> Date: Fri, 8 Mar 2024 18:46:26 +0100 Subject: [PATCH 2/2] IDEMPIERE-6063: Customization of email sent when server starts Replace properties file with a mail template as suggested by @hengsin --- .../src/org/compiere/util/WebEnv.java | 33 +++++++------------ 1 file changed, 12 insertions(+), 21 deletions(-) diff --git a/org.adempiere.base/src/org/compiere/util/WebEnv.java b/org.adempiere.base/src/org/compiere/util/WebEnv.java index 03cbe36c90..cb7c227c92 100644 --- a/org.adempiere.base/src/org/compiere/util/WebEnv.java +++ b/org.adempiere.base/src/org/compiere/util/WebEnv.java @@ -17,8 +17,6 @@ package org.compiere.util; import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; import java.sql.Timestamp; import java.util.Enumeration; import java.util.Properties; @@ -48,6 +46,8 @@ import org.apache.ecs.xhtml.tr; import org.compiere.Adempiere; import org.compiere.model.MClient; +import org.compiere.model.MMailText; +import org.compiere.model.MSysConfig; import org.compiere.model.MSystem; import org.compiere.model.SystemIDs; @@ -200,29 +200,26 @@ public static boolean initWeb (ServletContext context) */ private static void serverStartEMail(ServletContext context) { - File file = new File (Adempiere.getAdempiereHome() + File.separator + "ServerStartEMail.properties"); - System.out.println(file.getAbsolutePath()); - Properties props = new Properties(); boolean mailSent = false; MClient client = MClient.get(Env.getCtx(), 0); MSystem system = MSystem.get(Env.getCtx()); - if (file.exists() && file.isFile() && file.canRead()) { - FileInputStream fis = null; - try { - fis = new FileInputStream(file); - props.load(fis); + String recipient = MSysConfig.getValue("EMAIL_SERVER_START_RECIPIENT", 0, 0); + if (Util.isEmpty(recipient) || !EMail.validate(recipient)) + recipient = client.getRequestEMail(); - String recipient = props.getProperty("recipient"); - if (Util.isEmpty(recipient) || !EMail.validate(recipient)) - recipient = client.getRequestEMail(); + int mailtextID = MSysConfig.getIntValue("EMAIL_SERVER_START_MAILTEXT_ID", 0, 0); + if (mailtextID > 0) { - String subject = props.getProperty("subject"); + try { + MMailText mt = new MMailText(Env.getCtx(), mailtextID, null); + mt.setPO(client); + String subject = mt.getMailHeader(); subject = subject.replace("#SYSTEM_NAME#", system.getName()); subject = subject.replace("#SERVER_NAME#", WebUtil.getServerName()); - String message = props.getProperty("message"); + String message = mt.getMailText(true); message = message.replace("#SERVER_INFO#", context.getServerInfo()); message = message.replace("#ADEMPIERE_VERSION#", Adempiere.getVersion()); @@ -232,12 +229,6 @@ private static void serverStartEMail(ServletContext context) { } catch (Exception e) { log.warning("Can't send customized email when server starts: " + e.toString()); - } finally { - try { - fis.close(); - } catch (IOException e) { - e.printStackTrace(); - } } }