Skip to content

Commit

Permalink
Patch MailHost to allow configuring with env vars
Browse files Browse the repository at this point in the history
  • Loading branch information
buchi committed Apr 1, 2024
1 parent 86038a9 commit fde2929
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 0 deletions.
2 changes: 2 additions & 0 deletions opengever/base/monkey/patches/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
from .history_handler_tool import PatchCMFEditonsHistoryHandlerTool
from .jsonschema_for_portal_type import PatchGetJsonschemaForPortalType
from .language_tool import PatchLanguageToolCall
from .mailhost import PatchMakeMailer
from .maybe_report_exception import PatchMaybeReportException
from .namedfile_data_converter import PatchNamedfileNamedDataConverter
from .paste_permission import PatchDXContainerPastePermission
Expand Down Expand Up @@ -65,6 +66,7 @@
PatchGetJsonschemaForPortalType()()
PatchInvokeFactory()()
PatchLanguageToolCall()()
PatchMakeMailer()()
PatchMaybeReportException()()
PatchMembershipToolCreateMemberarea()()
PatchMembershipToolSetLoginTimes()()
Expand Down
38 changes: 38 additions & 0 deletions opengever/base/monkey/patches/mailhost.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
from opengever.base.monkey.patching import MonkeyPatch
from zope.sendmail.mailer import SMTPMailer
import os


def as_bool(string):
return string.lower() in ['1', 'yes', 'on', 'true']


class PatchMakeMailer(MonkeyPatch):
"""Patch MailHost to support configuring mail server settings through
environment variables.
"""

def __call__(self):

def _makeMailer(self):
"""Create a SMTPMailer"""
smtp_host = os.environ.get('SMTP_HOST', self.smtp_host)
smtp_port = os.environ.get('SMTP_PORT', self.smtp_port)
smtp_user = os.environ.get('SMTP_USER', self.smtp_uid)
smtp_password = os.environ.get('SMTP_PASSWORD', self.smtp_pwd)
smtp_force_tls = as_bool(os.environ.get('SMTP_FORCE_TLS', str(self.force_tls)))
smtp_no_tls = as_bool(os.environ.get('SMTP_NO_TLS', 'False'))
return SMTPMailer(
hostname=smtp_host,
port=int(smtp_port),
username=smtp_user or None,
password=smtp_password or None,
no_tls=smtp_no_tls,
force_tls=smtp_force_tls,
)


from Products.MailHost.MailHost import MailBase
locals()['__patch_refs__'] = False

self.patch_refs(MailBase, '_makeMailer', _makeMailer)

0 comments on commit fde2929

Please sign in to comment.