diff options
author | R. David Murray <rdmurray@bitdance.com> | 2010-12-02 21:47:19 (GMT) |
---|---|---|
committer | R. David Murray <rdmurray@bitdance.com> | 2010-12-02 21:47:19 (GMT) |
commit | a0b44b5adb05e96e68297adcba39985b8f4dee61 (patch) | |
tree | 1015b86932a3a58250e2833d8fec977671eddf04 | |
parent | 52173d4959a1c1e961efab2522e4ba8a22a3c7c6 (diff) | |
download | cpython-a0b44b5adb05e96e68297adcba39985b8f4dee61.zip cpython-a0b44b5adb05e96e68297adcba39985b8f4dee61.tar.gz cpython-a0b44b5adb05e96e68297adcba39985b8f4dee61.tar.bz2 |
#8989: add 'domain' keyword to make_msgid.
Patch by Adrian von Bidder.
-rw-r--r-- | Doc/library/email.util.rst | 10 | ||||
-rw-r--r-- | Lib/email/test/test_email.py | 4 | ||||
-rw-r--r-- | Lib/email/utils.py | 11 | ||||
-rw-r--r-- | Misc/ACKS | 1 | ||||
-rw-r--r-- | Misc/NEWS | 3 |
5 files changed, 23 insertions, 6 deletions
diff --git a/Doc/library/email.util.rst b/Doc/library/email.util.rst index a1ce301..f7b777a 100644 --- a/Doc/library/email.util.rst +++ b/Doc/library/email.util.rst @@ -105,11 +105,17 @@ There are several useful utilities provided in the :mod:`email.utils` module: ``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 :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) diff --git a/Lib/email/test/test_email.py b/Lib/email/test/test_email.py index 5545abe..7993486 100644 --- a/Lib/email/test/test_email.py +++ b/Lib/email/test/test_email.py @@ -2457,6 +2457,10 @@ multipart/report 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 diff --git a/Lib/email/utils.py b/Lib/email/utils.py index 5f40bac..ac4da37 100644 --- a/Lib/email/utils.py +++ b/Lib/email/utils.py @@ -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: <20020201195627.33539.96671@nightshade.la.mastaler.com> 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() utcdate = time.strftime('%Y%m%d%H%M%S', time.gmtime(timeval)) @@ -164,8 +166,9 @@ def make_msgid(idstring=None): idstring = '' else: idstring = '.' + idstring - idhost = socket.getfqdn() - msgid = '<%s.%s.%s%s@%s>' % (utcdate, pid, randint, idstring, idhost) + if domain is None: + domain = socket.getfqdn() + msgid = '<%s.%s.%s%s@%s>' % (utcdate, pid, randint, idstring, domain) return msgid @@ -77,6 +77,7 @@ Eric Beser Steven Bethard Stephen Bevan Ron Bickers +Adrian von Bidder David Binger Dominic Binks Philippe Biondi @@ -53,6 +53,9 @@ Core and Builtins 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 'File exists' exception when a target directory already exists with the specified mode. Patch by Ray Allen. |