2016-04-26 6 views
0
def get_email_body(self, email): 
    user = self.email_usr 
    password = self.app_email_pwd 
    connection = imaplib.IMAP4_SSL('imap.gmail.com') 
    connection.login(user, password) 
    connection.list() 
    connection.select('"INBOX"') 
    time.sleep(5) 
    result_search, data_search = connection.search(None, 'TO', email, 'SUBJECT', '"some subject"') 
    required_email = data_search[0] 
    result_fetch, data_fetch = connection.fetch(required_email, '(RFC822)') 
    email_body_string = data_fetch[0][1].decode('utf-8') 
    confirmation_link = self.parse_confirmation_link(email_body_string) 
    return confirmation_link 

この機能は、4回の実行の2回と同じように機能します。通常、それはで失敗します。python3 - imaplib:ランダムに(?)受信メールを取得できます

self = <imaplib.IMAP4_SSL object at 0x7fa853614b00>, name = 'FETCH' 

tag = b'JAAL5' 
def _command_complete(self, name, tag): 
    # BYE is expected after LOGOUT 
    if name != 'LOGOUT': 
     self._check_bye() 
    try: 
     typ, data = self._get_tagged_response(tag) 
    except self.abort as val: 
     raise self.abort('command: %s => %s' % (name, val)) 
    except self.error as val: 
     raise self.error('command: %s => %s' % (name, val)) 
    if name != 'LOGOUT': 
     self._check_bye() 
    if typ == 'BAD': 
     raise self.error('%s command error: %s %s' % (name, typ, data)) 
E   imaplib.error: FETCH command error: BAD [b'Could not parse command'] 

/usr/lib/python3.4/imaplib.py:964: error 

私の提案は、時々電子メールが、私は(私はそれが送られた直後に電子メールを探してる)time.sleepを追加した理由です.searchの瞬間に配信されていないということでした。 Else私は検索を試みましたが、result_fetchは「OK」ではありませんでしたが、助けにもなりませんでした。 他の提案はありますか?

答えて

0

oooops、私の提案は正しいが、time.sleepは間違った場所にあった。接続前に睡眠を移動し、すべてがスムーズに行く

関連する問題