summaryrefslogtreecommitdiff
path: root/Mailman/pythonlib/smtplib.py
diff options
context:
space:
mode:
Diffstat (limited to 'Mailman/pythonlib/smtplib.py')
-rwxr-xr-xMailman/pythonlib/smtplib.py42
1 files changed, 23 insertions, 19 deletions
diff --git a/Mailman/pythonlib/smtplib.py b/Mailman/pythonlib/smtplib.py
index c7865ad50..f898a2fe1 100755
--- a/Mailman/pythonlib/smtplib.py
+++ b/Mailman/pythonlib/smtplib.py
@@ -88,7 +88,7 @@ class SMTPSenderRefused(SMTPResponseException):
class SMTPRecipientsRefused(SMTPException):
"""All recipient addresses refused.
- The errors for each recipient are accessable thru the attribute
+ The errors for each recipient are accessible through the attribute
'recipients', which is a dictionary of exactly the same sort as
SMTP.sendmail() returns.
"""
@@ -98,7 +98,6 @@ class SMTPRecipientsRefused(SMTPException):
self.args = ( recipients,)
-
class SMTPDataError(SMTPResponseException):
"""The SMTP server didn't accept the data."""
@@ -108,6 +107,7 @@ class SMTPConnectError(SMTPResponseException):
class SMTPHeloError(SMTPResponseException):
"""The server refused our HELO reply."""
+
def quoteaddr(addr):
"""Quote a subset of the email addresses defined by RFC 821.
@@ -133,6 +133,24 @@ def quotedata(data):
return re.sub(r'(?m)^\.', '..',
re.sub(r'(?:\r\n|\n|\r(?!\n))', CRLF, data))
+def _get_fqdn_hostname(name):
+ name = string.strip(name)
+ if len(name) == 0:
+ name = socket.gethostname()
+ try:
+ hostname, aliases, ipaddrs = socket.gethostbyaddr(name)
+ except socket.error:
+ pass
+ else:
+ aliases.insert(0, hostname)
+ for name in aliases:
+ if '.' in name:
+ break
+ else:
+ name = hostname
+ return name
+
+
class SMTP:
"""This class manages a connection to an SMTP or ESMTP server.
SMTP Objects:
@@ -288,14 +306,7 @@ class SMTP:
Hostname to send for this command defaults to the FQDN of the local
host.
"""
- name=string.strip(name)
- if len(name)==0:
- name = socket.gethostname()
- try:
- name = socket.gethostbyaddr(name)[0]
- except socket.error:
- pass
- self.putcmd("helo",name)
+ self.putcmd("helo", _get_fqdn_hostname(name))
(code,msg)=self.getreply()
self.helo_resp=msg
return (code,msg)
@@ -305,14 +316,7 @@ class SMTP:
Hostname to send for this command defaults to the FQDN of the local
host.
"""
- name=string.strip(name)
- if len(name)==0:
- name = socket.gethostname()
- try:
- name = socket.gethostbyaddr(name)[0]
- except socket.error:
- pass
- self.putcmd("ehlo",name)
+ self.putcmd("ehlo", _get_fqdn_hostname(name))
(code,msg)=self.getreply()
# According to RFC1869 some (badly written)
# MTA's will disconnect on an ehlo. Toss an exception if
@@ -323,7 +327,7 @@ class SMTP:
if code<>250:
return (code,msg)
self.does_esmtp=1
- #parse the ehlo responce -ddm
+ #parse the ehlo response -ddm
resp=string.split(self.ehlo_resp,'\n')
del resp[0]
for each in resp: