2017-11-07 8 views
-1
  try: 
      if not self.check_smtp_connected("main", self.sender_addr): 
       self.close("main", self.sender_addr) 
       if not self.connect("main", self.sender_addr): 
        self.last_error = "req_id:%d,connect to %s main failed" % (mail_id, self.name) 
        raise Exception("req_id:%d,connect to %s main failed" % (mail_id, self.name)) 
      sender_addr = parseaddr(self.msg['From'])[1] 
      recv_addr = parseaddr(self.msg['To'])[1] 
      self.smtp_conns[self.sender_addr].sendmail(self.msg['From'], self.msg['To'], self.msg.as_string()) 
     except Exception as e: 
      glogger.warning("req_id:%d,send mail by %s failed, error: %s" % (mail_id, self.name, str(e))) 
     else: 
      sent_succ = True 
      break 

check_smtp_connected使用NOOP()[0] [SMTPサーバーへの接続を確認します。smtplib.SMTP.sendmailは、例外を発生させるが、そのstrが(250、 'OK')である

私が手に初めて: REQ_ID:7066283を、tx_smtpでメールを送信が失敗し、エラーが:そう、例外がタイムアウトして、私が使用して接続を確認するcheck_smtp_connectedある

をタイムアウトし、それが壊れたのです。

私が手に二度目: REQ_ID:7066283を、tx_smtpでメールを送信できませんでした。エラー:(250、 'OK') ので、例外は(250、 'OK')である

私は、ソースコードを読みますこの例外を発生させるブランチを見つけることができません。

私はひどく困惑しています。結果は私のメールボックスに2つのメールが届きます

+1

問題を十分に説明できるコードを投稿し、完全なトレースバックを含む適切なエラーの説明を書き込んでください。 –

答えて

0

私はsmtplib引数 'timeout = 3'を設定してメールが大きすぎるので、初めてタイムアウトになるのでこの問題を解決します。私は本当にこのメールを2回受け取っているが、証明されていないので、初めて返信するのは2回目だと思う。私はタイムアウトを大きく設定し、すべてが大丈夫です!

関連する問題