Commit 6730f26c authored by Neil Schemenauer's avatar Neil Schemenauer

Add local_hostname option to SMTP.__init__. If supplied, it is used

as the fully qualified local hostname.
parent 03f3ee6d
...@@ -220,13 +220,15 @@ class SMTP: ...@@ -220,13 +220,15 @@ class SMTP:
ehlo_resp = None ehlo_resp = None
does_esmtp = 0 does_esmtp = 0
def __init__(self, host = '', port = 0): def __init__(self, host = '', port = 0, local_hostname = None):
"""Initialize a new instance. """Initialize a new instance.
If specified, `host' is the name of the remote host to which to If specified, `host' is the name of the remote host to which to
connect. If specified, `port' specifies the port to which to connect. connect. If specified, `port' specifies the port to which to connect.
By default, smtplib.SMTP_PORT is used. An SMTPConnectError is raised By default, smtplib.SMTP_PORT is used. An SMTPConnectError is raised
if the specified `host' doesn't respond correctly. if the specified `host' doesn't respond correctly. If specified,
`local_hostname` is used as the FQDN of the local host. By default,
the local hostname is found using gethostbyname().
""" """
self.esmtp_features = {} self.esmtp_features = {}
...@@ -234,6 +236,10 @@ class SMTP: ...@@ -234,6 +236,10 @@ class SMTP:
(code, msg) = self.connect(host, port) (code, msg) = self.connect(host, port)
if code != 220: if code != 220:
raise SMTPConnectError(code, msg) raise SMTPConnectError(code, msg)
if local_hostname:
self.local_hostname = local_hostname
else:
self.local_hostname = socket.getfqdn()
def set_debuglevel(self, debuglevel): def set_debuglevel(self, debuglevel):
"""Set the debug output level. """Set the debug output level.
...@@ -356,10 +362,7 @@ class SMTP: ...@@ -356,10 +362,7 @@ class SMTP:
Hostname to send for this command defaults to the FQDN of the local Hostname to send for this command defaults to the FQDN of the local
host. host.
""" """
if name: self.putcmd("helo", name or self.local_hostname)
self.putcmd("helo", name)
else:
self.putcmd("helo", socket.getfqdn())
(code,msg)=self.getreply() (code,msg)=self.getreply()
self.helo_resp=msg self.helo_resp=msg
return (code,msg) return (code,msg)
...@@ -370,10 +373,7 @@ class SMTP: ...@@ -370,10 +373,7 @@ class SMTP:
host. host.
""" """
self.esmtp_features = {} self.esmtp_features = {}
if name: self.putcmd("ehlo", name or self.local_hostname)
self.putcmd("ehlo", name)
else:
self.putcmd("ehlo", socket.getfqdn())
(code,msg)=self.getreply() (code,msg)=self.getreply()
# According to RFC1869 some (badly written) # According to RFC1869 some (badly written)
# MTA's will disconnect on an ehlo. Toss an exception if # MTA's will disconnect on an ehlo. Toss an exception if
......
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