2016-04-26 62 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 

我的建議是,有時電子郵件是不是.search的時刻,這就是爲什麼我添加time.sleep(我在尋找的電子郵件在發送後立即)交付。 否則,我嘗試搜索,而result_fetch不是'好',但也沒有幫助。 還有其他建議嗎?

回答

0

oooops,我的建議是正確的,但time.sleep是在不正確的地方。連接之前移動睡眠,一切順利