mirror of
https://github.com/ansible-collections/community.general.git
synced 2026-05-06 13:22:48 +00:00
In python 3.7.0, changes in `ssl.py` breaks `smtplib.SMTP_SSL`, which
then breaks `mail` module in ansible.
Run this line in python shell:
import smtplib;smtplib.SMTP_SSL().connect(host='smtp.gmail.com', port=465)
Before python 3.7.0, we will get:
(220, b'smtp.gmail.com ESMTP j13-v6sm3086685pgq.56 - gsmtp')
In python 3.7.0, we get such error at `lib/python3.7/ssl.py` line 843, method `_create`:
ValueError: server_hostname cannot be an empty string or start with a leading dot.
The ssl module is using host info on SMTP_SSL instance, which is not set.
The fix/workaround is simple, just pass host info to it:
import smtplib;smtplib.SMTP_SSL(host='smtp.gmail.com').connect(host='smtp.gmail.com', port=465)
Fixes: #44550
Signed-off-by: Guo Qiao <guoqiao@gmail.com>
This commit is contained in:
2
changelogs/fragments/44552-mail-py370-compat.yml
Normal file
2
changelogs/fragments/44552-mail-py370-compat.yml
Normal file
@@ -0,0 +1,2 @@
|
||||
bugfixes:
|
||||
- fix mail module for python 3.7.0 (https://github.com/ansible/ansible/pull/44552)
|
||||
@@ -248,7 +248,7 @@ def main():
|
||||
try:
|
||||
if secure != 'never':
|
||||
try:
|
||||
smtp = smtplib.SMTP_SSL(timeout=timeout)
|
||||
smtp = smtplib.SMTP_SSL(host=host, timeout=timeout)
|
||||
code, smtpmessage = smtp.connect(host, port=port)
|
||||
secure_state = True
|
||||
except ssl.SSLError as e:
|
||||
|
||||
Reference in New Issue
Block a user