[Python-bugs-list] [ python-Bugs-487310 ] smtplib mishandles SMTP disconnects
noreply@sourceforge.net
noreply@sourceforge.net
Thu, 29 Nov 2001 16:35:19 -0800
Bugs item #487310, was opened at 2001-11-29 16:35
You can respond by visiting:
http://sourceforge.net/tracker/?func=detail&atid=105470&aid=487310&group_id=5470
Category: Python Library
Group: Python 2.1.1
Status: Open
Resolution: None
Priority: 5
Submitted By: Fazal Majid (majid)
Assigned to: Nobody/Anonymous (nobody)
Summary: smtplib mishandles SMTP disconnects
Initial Comment:
smtplib handles SMTP disconnects (e.g. timeouts)
inconsistently. The smtplib.SMTP.send() method does not
reset self.file on a socket error, unlike getreply(),
and thus a close() is necessary for in one case but not
in the other.
Recommendation: have smtplib.SMTP.send() call close()
on socket.error just as smtplib.SMTP.getreply() does on
EOF on self.file.
In the following test case, I have set the SMTP timeout
on my local machine to 10 seconds:
Python 2.1.1 (#1, Nov 7 2001, 16:18:10)
[GCC 2.95.3 20010315 (release)] on sunos5
Type "copyright", "credits" or "license" for more
information.
>>> import smtplib
>>> s = smtplib.SMTP('localhost', 25)
>>> import time
>>> time.sleep(10)
>>> s.sendmail('fmajid@kefta.com', 'fmajid@kefta.com',
'...')
Traceback (most recent call last):
File "<stdin>", line 1, in ?
File "/usr/local/lib/python2.1/smtplib.py", line 469,
in sendmail
(code,resp) = self.helo()
File "/usr/local/lib/python2.1/smtplib.py", line 305,
in helo
self.putcmd("helo", socket.getfqdn())
File "/usr/local/lib/python2.1/smtplib.py", line 249,
in putcmd
self.send(str)
File "/usr/local/lib/python2.1/smtplib.py", line 239,
in send
raise SMTPServerDisconnected('Server not connected')
smtplib.SMTPServerDisconnected: Server not connected
>>> s.connect('localhost', 25)
Traceback (most recent call last):
File "<stdin>", line 1, in ?
File "/usr/local/lib/python2.1/smtplib.py", line 226,
in connect
(code,msg)=self.getreply()
File "/usr/local/lib/python2.1/smtplib.py", line 271,
in getreply
raise SMTPServerDisconnected("Connection
unexpectedly closed")
smtplib.SMTPServerDisconnected: Connection unexpectedly
closed
>>> s.connect('localhost', 25)
(220, 'bayazid.kefta.com ESMTP Postfix')
----------------------------------------------------------------------
You can respond by visiting:
http://sourceforge.net/tracker/?func=detail&atid=105470&aid=487310&group_id=5470