2

スローされるエラーは次のとおりです。

error: [Errno 110] Connection timed out

何を除いていいのかわからない?

    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('Error: unable to send email"'):
        pass
    except smtplib.socket.error ('Error: could not connect to server'):
        pass

ありがとう。

4

3 に答える 3

4

インスタンスではなく、例外クラスを提供する必要があります。つまり、コードは次のようになります

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

2 番目の例外 はsmtplib.socket.error、そのエラーをキャッチするのに適しているようです。通常は、ソケット モジュールから直接アクセスしimport socketますsocket.error

これがコードが「あるべき」ものであると言ったことに注意してください。これは誇張のようなものです。try/を使用する場合、特に のようなかなり一般的なエラーをキャッチする場合はexcept、ブロックにできるだけ少ないコードを含める必要があります。trysocket.error

于 2010-03-28T03:43:55.713 に答える
2

うまくいくと思いsocket.errorますが、使用しているコードを投稿していただければ、より良いお手伝いができます。smtplib.SMTPConnectErrorも興味を持つべきです。

次のようなことを試してください:

try:
    server = smtplib.SMTP("something.com")
except (socket.error, smtplib.SMTPConnectError):
    print >> stderr, "Error connecting"
    sys.exit(-1)
于 2010-03-28T03:28:17.383 に答える