feat(odoo-mailgate): add support for custom mail thread model and thread id

This commit is contained in:
Janik von Rotz committed 2025-05-12 17:50:25 +02:00
1 parent 8200193901
commit dbe43345c8
5 files changed
+38 -10

No files matched your search

+12 -8
View File
@@ -9,15 +9,17 @@ Source: <https://github.com/Mint-System/Odoo-Build/tree/main/images/odoo-mailgat
## Usage
Setup environment vaiables:
Setup environment variables:
```bash
export ODOO_URL="http://odoo:8069"
export ODOO_DATABASE="odoo"
export ODOO_USERNAME="admin"
export ODOO_PASSWORD="admin"
export MAIL_DOMAIN="yourcompany.com"
export MAIL_ALIASES="info invoice contact support"
export ODOO_URL="https://odoo.example.com" # default: "http://odoo:8069""
export ODOO_DATABASE="example" # default: "odoo"
export ODOO_USERNAME="demo" # default: "admin"
export ODOO_PASSWORD="demo" # default: "admin"
export MAIL_MODEL="res.partner" # default: False
export MAIL_THREAD_ID=10 # default: False
export MAIL_DOMAIN="yourcompany.com" # default: "yourcompany.com"
export MAIL_ALIASES="info invoice contact support" # default: "info"
```
Run the upgrade script:
@@ -28,6 +30,8 @@ docker run -d --name odoo-mailgate -p 25:25 -p 587:587 \
-e ODOO_DATABASE=$ODOO_DATABASE \
-e ODOO_USERNAME=$ODOO_USERNAME \
-e ODOO_PASSWORD=$ODOO_PASSWORD \
-e MAIL_MODEL=$MAIL_MODEL \
-e MAIL_THREAD_ID=$MAIL_THREAD_ID \
-e MAIL_DOMAIN=$MAIL_DOMAN \
-e MAIL_ALIASES=$MAIL_ALIASES \
mintsystem/odoo-mailgate
@@ -57,7 +61,7 @@ The mail will be forwarded to Odoo and shown as a discuss channel.
Trace the mailgate log:
```bash
docker exec mailgate tail -f /var/log/mail.log
docker exec mailgate tail -f /var/log/mail.log
```
You can also send a mail with tls encryption:
+13 -1
View File
@@ -12,6 +12,8 @@ syslogd -O /var/log/mail.log
: ${ODOO_DATABASE:=${ODOO_DB:="odoo"}}
: ${ODOO_USERNAME:=${ODOO_USERNAME:="admin"}}
: ${ODOO_PASSWORD:=${ODOO_PASSWORD:="admin"}}
: ${MAIL_MODEL:=${MAIL_MODEL:=""}}
: ${MAIL_THREAD_ID:=${MAIL_THREAD_ID:=""}}
: ${MAIL_DOMAIN:=${MAIL_DOMAIN:="yourcompany.com"}}
: ${MAIL_ALIASES:=${MAIL_ALIASES:="info"}}
@@ -47,9 +49,19 @@ if ! grep -q "^submission" /etc/postfix/master.cf; then
-o smtpd_tls_wrappermode=no" >> /etc/postfix/master.cf
fi
# Set optional parameters
if [ $MAIL_MODEL != "" ];then
MAIL_MODEL_PARAM=" -m $MAIL_MODEL"
fi
if [ $MAIL_THREAD_ID != "" ];then
MAIL_THREAD_ID_PARAM=" -i $MAIL_THREAD_ID"
fi
# Setup aliases
for MAIL_ALIAS in $MAIL_ALIASES; do
echo "$MAIL_ALIAS: \"|/usr/local/bin/odoo-mailgate.py -l ${ODOO_URL} -d ${ODOO_DATABASE} -u ${ODOO_USERNAME} -p ${ODOO_PASSWORD}\"" >> /etc/aliases
echo "$MAIL_ALIAS: \"|/usr/local/bin/odoo-mailgate.py -l ${ODOO_URL} -d ${ODOO_DATABASE} -u ${ODOO_USERNAME} -p ${ODOO_PASSWORD}${MAIL_MODEL_PARAM}${MAIL_THREAD_ID_PARAM}\"" >> /etc/aliases
newaliases
entrypoint-log "Forward alias $MAIL_ALIAS to Odoo database $ODOO_DATABASE at ${ODOO_HOST}:${ODOO_PORT}."
done
+3 -1
View File
@@ -11,6 +11,8 @@ def main():
op.add_option("-d", "--database", dest="database", help="Odoo database name (default: %default)", default='odoo')
op.add_option("-u", "--username", dest="username", help="Odoo user id to connect with (default: %default)", default='admin')
op.add_option("-p", "--password", dest="password", help="Odoo user password (default: %default)", default='admin')
op.add_option("-m", "--model", dest="model", help="Odoo mail thread model (default: %default)", default=False)
op.add_option("-i", "--thread-id", dest="thread_id", help="Odoo mail thread id (default: %default)", default=None)
(o, args) = op.parse_args()
try:
@@ -18,7 +20,7 @@ def main():
common = xmlrpclib.ServerProxy(f"{o.url}/xmlrpc/2/common")
uid = common.authenticate(o.database, o.username, o.password, {})
models = xmlrpclib.ServerProxy(f"{o.url}/xmlrpc/2/object", allow_none=True)
models.execute_kw(o.database, uid, o.password, "mail.thread", "message_process", [False, xmlrpclib.Binary(msg)], {})
models.execute_kw(o.database, uid, o.password, "mail.thread", "message_process", [o.model, xmlrpclib.Binary(msg), None, False, False, o.thread_id], {})
except xmlrpclib.Fault as e:
print(f"XML-RPC Fault: {e.faultCode} - {e.faultString}")
sys.exit(1)
+7
View File
@@ -11,6 +11,13 @@ export WORKERS=${WORKERS:=0}
export LIMIT_REQUEST=${LIMIT_REQUEST:=8192}
export LIMIT_TIME_CPU=${LIMIT_TIME_CPU:=60}
export LIMIT_TIME_REAL=${LIMIT_TIME_REAL:=120}
export MODULE_AUTO_INSTALL_DISABLED=${MODULE_AUTO_INSTALL_DISABLED:=""}
export SMTP_SERVER=${SMTP_SERVER:=""}
export SMTP_PORT=${SMTP_PORT:=""}
export SMTP_SSL=${SMTP_SSL:=""}
export SMTP_USER=${SMTP_USER:=""}
export SMTP_PASSWORD=${SMTP_PASSWORD:=""}
export EMAIL_FROM=${EMAIL_FROM:=""}
TEMPLATE_FILE="${ODOO_ENVSUBST_TEMPLATE_FILE:-/etc/odoo/odoo.conf.template}"
OUTPUT_FILE="${ODOO_ENVSUBST_OUTPUT_FILE:-/etc/odoo/odoo.conf}"
+3
View File
@@ -569,6 +569,9 @@ function list-modules() {
function template-compose() {
echo "Template compose.yml"
SMTP_SERVER="mailpit"
# Extract variables and export them
# grep -oP '\$\{([^}]+)\}' compose.yml.template | sed 's/${\([^}]\+\)}/export \1/'
export CONTAINER_REGISTRY