diff --git a/changelogs/fragments/7740-add-message-id-header-to-mail-module.yml b/changelogs/fragments/7740-add-message-id-header-to-mail-module.yml new file mode 100644 index 0000000000..1c142b62ef --- /dev/null +++ b/changelogs/fragments/7740-add-message-id-header-to-mail-module.yml @@ -0,0 +1,2 @@ +minor_changes: + - mail - add ``Message-ID`` header; which is required by some mail servers (https://github.com/ansible-collections/community.general/pull/7740). diff --git a/plugins/modules/mail.py b/plugins/modules/mail.py index 13f7c5becd..9060b9c782 100644 --- a/plugins/modules/mail.py +++ b/plugins/modules/mail.py @@ -222,7 +222,7 @@ import smtplib import ssl import traceback from email import encoders -from email.utils import parseaddr, formataddr, formatdate +from email.utils import parseaddr, formataddr, formatdate, make_msgid from email.mime.base import MIMEBase from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText @@ -349,6 +349,11 @@ def main(): msg['From'] = formataddr((sender_phrase, sender_addr)) msg['Date'] = formatdate(localtime=True) msg['Subject'] = Header(subject, charset) + try: + msg['Message-ID'] = make_msgid(domain='ansible') + except TypeError: + # `domain` is only available in Python 3 + msg['Message-ID'] = make_msgid() msg.preamble = "Multipart message" for header in headers: