diff --git a/docker-compose.yml b/docker-compose.yml index 8c3a6f10451da42e564e0d3f580d8c5c0fe45284..92bb22a5e45f147458f2ebd5c294fae67d4d5360 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -34,6 +34,12 @@ services: LC_ALL: ${LOCALE} LC_C_TYPE: ${LOCALE} TZ: ${TZ} + MAIL_SMTP_HOST: ${MAIL_SMTP_HOST} + MAIL_SMTP_PORT: ${MAIL_SMTP_PORT} + MAIL_SENDMODE: ${MAIL_SENDMODE} + MAIL_SMTP_USER: ${MAIL_SMTP_USER} + MAIL_SMTP_PASSWORD: ${MAIL_SMTP_PASSWORD} + MAIL_MAIN_FROM: ${MAIL_MAIN_FROM} restart: ${RESTART} links: - mariadb diff --git a/docker/Dockerfile b/docker/Dockerfile index 1f9eabd4c0d9db714a97a1cfa030eda6d88cf5a7..c726e7d271f9633c7478562ee7cafb885fa247d6 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -67,5 +67,6 @@ RUN sed -i "s/^# *\($LOCALE\)/\1/" /etc/locale.gen && locale-gen WORKDIR /var/www/ RUN mkdir /var/www/custom +COPY setupmail.php / COPY entrypoint.sh / ENTRYPOINT ["/entrypoint.sh"] diff --git a/docker/setupmail.php b/docker/setupmail.php new file mode 100644 index 0000000000000000000000000000000000000000..9ec5ea694fa0305a685be9403707d21b4ec07fc8 --- /dev/null +++ b/docker/setupmail.php @@ -0,0 +1,41 @@ +<?php +define("NOSESSION", 1); + +include "/var/www/dolibarr/htdocs/master.inc.php"; // dolibarr +include_once DOL_DOCUMENT_ROOT . "/core/lib/admin.lib.php"; // dolibarr_set_const +include_once DOL_DOCUMENT_ROOT . "/core/lib/functions.lib.php"; // For sanitizeVal + +$errors = []; +$setup_vars = [ + "MAIL_SMTP_HOST" => sanitizeVal(getenv("MAIL_SMTP_HOST"), 'alphanohtml'), // MAIN_MAIL_SMTP_SERVER -> IP or HOST + "MAIL_SMTP_PORT" => sanitizeVal(getenv("MAIL_SMTP_PORT"), 'int'), // MAIN_MAIL_SMTP_PORT -> 465 + "MAIL_SENDMODE" => sanitizeVal(getenv("MAIL_SENDMODE"), 'aZ09'), // MAIN_MAIL_SENDMODE -> stmps + "MAIL_SMTPS_USER" => sanitizeVal(getenv("MAIL_SMTP_USER"), 'alphanohtml'), // MAIN_MAIL_SMTPS_ID -> robot@domain.com + "MAIL_SMTPS_PASSWORD" => sanitizeVal(getenv("MAIL_SMTP_PASSWORD"), 'none'), // MAIN_MAIL_SMTPS_PW -> pw + "MAIL_MAIN_FROM" => sanitizeVal(getenv("MAIL_MAIN_FROM"), 'alphanohtml'), // MAIN_MAIL_EMAIL_FROM -> no-reply@domain.com +]; + +foreach ($setup_vars as $key => $val){ + if ($val) continue; + $errors[] = "Missing value for '{$key}' !"; +} + +if (!empty($errors)){ + $errcount = count($errors); + print("[MAIL]: {$errcount} configuration errors:"); + foreach ($errors as $errs){ + print("\t>" . $errors . "\n"); + } + +} + +else { + dolibarr_set_const($db, "MAIN_MAIL_SENDMODE", $setup_vars['MAIL_SENDMODE'], 'chaine', 0, '', $conf->entity); + dolibarr_set_const($db, "MAIN_MAIL_SMTP_PORT", $setup_vars['MAIL_SMTP_PORT'], 'chaine', 0, '', $conf->entity); + dolibarr_set_const($db, "MAIN_MAIL_SMTP_SERVER", $setup_vars['MAIL_SMTP_HOST'], 'chaine', 0, '', $conf->entity); + dolibarr_set_const($db, "MAIN_MAIL_SMTPS_ID", $setup_vars['MAIL_SMTPS_USER'], 'chaine', 0, '', $conf->entity); + dolibarr_set_const($db, "MAIN_MAIL_SMTPS_PW", $setup_vars['MAIL_SMTPS_PASSWORD'], 'chaine', 0, '', $conf->entity); // will encrypt the password because the key ends with'PW' + dolibarr_set_const($db, "MAIN_MAIL_EMAIL_FROM", $setup_vars['MAIL_MAIN_FROM'], 'chaine', 0, '', $conf->entity); +} + +