smtplib TimeoutError not catch

MRAB python at mrabarnett.plus.com
Wed Oct 12 15:26:21 EDT 2016


On 2016-10-12 14:21, Joaquin Alzola wrote:
> Hi Guys
>
> Try to connect to the smtp via smtplib.
>
> The connection is down because the Firewall has not been open yet so the exception is something that should appear.
> Now I want to catch this timeout in case error happens in future.
>
> Here the exception trace.
>
> [2016-10-12 14:14:06,289] ERROR in app: Exception on /api/barredMSISDN [POST]
> Traceback (most recent call last):
>   File "/usr/local/lib/python3.4/site-packages/flask/app.py", line 1988, in wsgi_app
>     response = self.full_dispatch_request()
>   File "/usr/local/lib/python3.4/site-packages/flask/app.py", line 1641, in full_dispatch_request
>     rv = self.handle_user_exception(e)
>   File "/usr/local/lib/python3.4/site-packages/flask/app.py", line 1544, in handle_user_exception
>     reraise(exc_type, exc_value, tb)
>   File "/usr/local/lib/python3.4/site-packages/flask/_compat.py", line 33, in reraise
>     raise value
>   File "/usr/local/lib/python3.4/site-packages/flask/app.py", line 1639, in full_dispatch_request
>     rv = self.dispatch_request()
>   File "/usr/local/lib/python3.4/site-packages/flask/app.py", line 1625, in dispatch_request
>     return self.view_functions[rule.endpoint](**req.view_args)
>   File "/root/main.py", line 34, in barredMSISDN
>     smtp_con(http_json)
>   File "/root/main.py", line 134, in smtp_con
>     server = smtplib.SMTP('smtp.lebara.com')
>   File "/usr/local/lib/python3.4/smtplib.py", line 242, in __init__
>     (code, msg) = self.connect(host, port)
>   File "/usr/local/lib/python3.4/smtplib.py", line 321, in connect
>     self.sock = self._get_socket(host, port, self.timeout)
>   File "/usr/local/lib/python3.4/smtplib.py", line 292, in _get_socket
>     self.source_address)
>   File "/usr/local/lib/python3.4/socket.py", line 516, in create_connection
>     raise err
>   File "/usr/local/lib/python3.4/socket.py", line 507, in create_connection
>     sock.connect(sa)
> TimeoutError: [Errno 110] Connection timed out
>
>
> How to catch such exception? ... have been trying with a lot of combinations (of course except the correct one :))
>
>         try:
>                 server.sendmail(sender, receivers, msg.as_string())
>         except Exception as e: <-- have try with many combinations here
>                 print("SMTP could not be contacted: %s",e)
>                 pass
>         finally:
>                server.quit()
>
Not surprisingly, the exception you should catch is simply TimeoutError:

     try:
         server.sendmail(sender, receivers, msg.as_string())
     except TimeoutError as e:
         print("SMTP could not be contacted: %s" % e)
     finally:
         server.quit()




More information about the Python-list mailing list