Необходимо указать класс исключения, а не его экземпляр. То есть код должен выглядеть как
try:
smtpObj = smtplib.SMTP('smtp.example.com')
smtpObj.starttls()
smtpObj.login('user','pass')
smtpObj.sendmail(sender, receivers, message)
print "Successfully sent email"
except smtplib.SMTPException: # Didn't make an instance.
pass
except smtplib.socket.error:
pass
Второе исключение, smtplib.socket.error
, похоже, применимо для обнаружения этой ошибки. Доступ к нему обычно осуществляется через модуль сокета import socket
, socket.error
.
Обратите внимание, что я сказал, что именно так "должен" выглядеть код, и это своего рода преувеличение. При использовании try
/ except
вы хотите включить как можно меньше кода в блок try
, особенно когда вы обнаруживаете довольно общие ошибки, такие как socket.error
.