Add local_hostname option to SMTP.__init__.  If supplied, it is used
as the fully qualified local hostname.
diff --git a/Lib/smtplib.py b/Lib/smtplib.py
index 079f128..a6224e0 100755
--- a/Lib/smtplib.py
+++ b/Lib/smtplib.py
@@ -220,13 +220,15 @@
     ehlo_resp = None
     does_esmtp = 0
 
-    def __init__(self, host = '', port = 0):
+    def __init__(self, host = '', port = 0, local_hostname = None):
         """Initialize a new instance.
 
         If specified, `host' is the name of the remote host to which to
         connect.  If specified, `port' specifies the port to which to connect.
         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 = {}
@@ -234,6 +236,10 @@
             (code, msg) = self.connect(host, port)
             if code != 220:
                 raise SMTPConnectError(code, msg)
+        if local_hostname:
+                self.local_hostname = local_hostname
+        else:
+                self.local_hostname = socket.getfqdn()
 
     def set_debuglevel(self, debuglevel):
         """Set the debug output level.
@@ -356,10 +362,7 @@
         Hostname to send for this command defaults to the FQDN of the local
         host.
         """
-        if name:
-            self.putcmd("helo", name)
-        else:
-            self.putcmd("helo", socket.getfqdn())
+        self.putcmd("helo", name or self.local_hostname)
         (code,msg)=self.getreply()
         self.helo_resp=msg
         return (code,msg)
@@ -370,10 +373,7 @@
         host.
         """
         self.esmtp_features = {}
-        if name:
-            self.putcmd("ehlo", name)
-        else:
-            self.putcmd("ehlo", socket.getfqdn())
+        self.putcmd("ehlo", name or self.local_hostname)
         (code,msg)=self.getreply()
         # According to RFC1869 some (badly written)
         # MTA's will disconnect on an ehlo. Toss an exception if