diff --git a/changelogs/fragments/fix_tls_mail.yaml b/changelogs/fragments/fix_tls_mail.yaml new file mode 100644 index 00000000000..c1620a823ee --- /dev/null +++ b/changelogs/fragments/fix_tls_mail.yaml @@ -0,0 +1,2 @@ +bugfixes: + - fix mail module when using starttls https://github.com/ansible/ansible/issues/42338 diff --git a/lib/ansible/modules/notification/mail.py b/lib/ansible/modules/notification/mail.py index d27a9490757..4598690f878 100644 --- a/lib/ansible/modules/notification/mail.py +++ b/lib/ansible/modules/notification/mail.py @@ -263,6 +263,11 @@ def main(): except smtplib.SMTPException as e: module.fail_json(rc=1, msg='Unable to Connect %s:%s: %s' % (host, port, to_native(e)), exception=traceback.format_exc()) + try: + smtp.ehlo() + except smtplib.SMTPException as e: + module.fail_json(rc=1, msg='Helo failed for host %s:%s: %s' % (host, port, to_native(e)), exception=traceback.format_exc()) + if int(code) > 0: if not secure_state and secure in ('starttls', 'try'): if smtp.has_extn('STARTTLS'): @@ -272,13 +277,13 @@ def main(): except smtplib.SMTPException as e: module.fail_json(rc=1, msg='Unable to start an encrypted session to %s:%s: %s' % (host, port, to_native(e)), exception=traceback.format_exc()) + try: + smtp.ehlo() + except smtplib.SMTPException as e: + module.fail_json(rc=1, msg='Helo failed for host %s:%s: %s' % (host, port, to_native(e)), exception=traceback.format_exc()) else: if secure == 'starttls': module.fail_json(rc=1, msg='StartTLS is not offered on server %s:%s' % (host, port)) - try: - smtp.ehlo() - except smtplib.SMTPException as e: - module.fail_json(rc=1, msg='Helo failed for host %s:%s: %s' % (host, port, to_native(e)), exception=traceback.format_exc()) if username and password: if smtp.has_extn('AUTH'):