Commit a0b44b5a authored by R. David Murray's avatar R. David Murray

#8989: add 'domain' keyword to make_msgid.

Patch by Adrian von Bidder.
parent 52173d49
...@@ -105,11 +105,17 @@ There are several useful utilities provided in the :mod:`email.utils` module: ...@@ -105,11 +105,17 @@ There are several useful utilities provided in the :mod:`email.utils` module:
``False``. The default is ``False``. ``False``. The default is ``False``.
.. function:: make_msgid(idstring=None) .. function:: make_msgid(idstring=None, domain=None)
Returns a string suitable for an :rfc:`2822`\ -compliant Returns a string suitable for an :rfc:`2822`\ -compliant
:mailheader:`Message-ID` header. Optional *idstring* if given, is a string :mailheader:`Message-ID` header. Optional *idstring* if given, is a string
used to strengthen the uniqueness of the message id. used to strengthen the uniqueness of the message id. Optional *domain* if
given provides the portion of the msgid after the '@'. The default is the
local hostname. It is not normally necessary to override this default, but
may be useful certain cases, such as a constructing distributed system that
uses a consistent domain name across multiple hosts.
.. versionchanged:: 3.2 domain keyword added
.. function:: decode_rfc2231(s) .. function:: decode_rfc2231(s)
......
...@@ -2457,6 +2457,10 @@ multipart/report ...@@ -2457,6 +2457,10 @@ multipart/report
text/rfc822-headers text/rfc822-headers
""") """)
def test_make_msgid_domain(self):
self.assertEqual(
email.utils.make_msgid(domain='testdomain-string')[-19:],
'@testdomain-string>')
# Test the iterator/generators # Test the iterator/generators
......
...@@ -148,13 +148,15 @@ def formatdate(timeval=None, localtime=False, usegmt=False): ...@@ -148,13 +148,15 @@ def formatdate(timeval=None, localtime=False, usegmt=False):
def make_msgid(idstring=None): def make_msgid(idstring=None, domain=None):
"""Returns a string suitable for RFC 2822 compliant Message-ID, e.g: """Returns a string suitable for RFC 2822 compliant Message-ID, e.g:
<20020201195627.33539.96671@nightshade.la.mastaler.com> <20020201195627.33539.96671@nightshade.la.mastaler.com>
Optional idstring if given is a string used to strengthen the Optional idstring if given is a string used to strengthen the
uniqueness of the message id. uniqueness of the message id. Optional domain if given provides the
portion of the message id after the '@'. It defaults to the locally
defined hostname.
""" """
timeval = time.time() timeval = time.time()
utcdate = time.strftime('%Y%m%d%H%M%S', time.gmtime(timeval)) utcdate = time.strftime('%Y%m%d%H%M%S', time.gmtime(timeval))
...@@ -164,8 +166,9 @@ def make_msgid(idstring=None): ...@@ -164,8 +166,9 @@ def make_msgid(idstring=None):
idstring = '' idstring = ''
else: else:
idstring = '.' + idstring idstring = '.' + idstring
idhost = socket.getfqdn() if domain is None:
msgid = '<%s.%s.%s%s@%s>' % (utcdate, pid, randint, idstring, idhost) domain = socket.getfqdn()
msgid = '<%s.%s.%s%s@%s>' % (utcdate, pid, randint, idstring, domain)
return msgid return msgid
......
...@@ -77,6 +77,7 @@ Eric Beser ...@@ -77,6 +77,7 @@ Eric Beser
Steven Bethard Steven Bethard
Stephen Bevan Stephen Bevan
Ron Bickers Ron Bickers
Adrian von Bidder
David Binger David Binger
Dominic Binks Dominic Binks
Philippe Biondi Philippe Biondi
......
...@@ -53,6 +53,9 @@ Core and Builtins ...@@ -53,6 +53,9 @@ Core and Builtins
Library Library
------- -------
- Issue #8989: email.utils.make_msgid now has a domain parameter that can
override the domain name used in the generated msgid.
- Issue #9299: Add exist_ok parameter to os.makedirs to suppress the - Issue #9299: Add exist_ok parameter to os.makedirs to suppress the
'File exists' exception when a target directory already exists with the 'File exists' exception when a target directory already exists with the
specified mode. Patch by Ray Allen. specified mode. Patch by Ray Allen.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment