Вход | Регистрация

Проблем с imaplib / email на Python3.1

  • Здравейте,

    опитвам се да ползвам imap на Python3.1. Следния код върви прекрасно на 2.6, но на 3.1 извежда None.

    P.S. Ако някой има интерес да го пуска user и pass под 3.1 трябва да са encode-нати, под 2.6 НЕ.


    import imaplib, email
    
    # for python2.6 don't use .encode()
    user = 'youruser@gmail.com'.encode()
    pas = 'yourpass'.encode()
    
    m = imaplib.IMAP4_SSL("imap.gmail.com", 993)
    m.login(user, pas)
    
    status, count = m.select('Inbox')
    
    typ, msg_data = m.fetch(count[0], '(RFC822)')
    
    for response_part in msg_data:
        if isinstance(response_part, tuple):
            s = str(response_part[1])
    
            msg = email.message_from_string(s)
            for header in [ 'subject', 'to', 'from' ]:
                print('%-8s: %s' % (header.upper(), msg[header]))
    
    m.close()
    m.logout()
    11.05.2010 (променeно 12.05.2010)
  • Проблема е че response_part[1] ти е str в 2.6, докато в 3.1 е bytes, съответно и cast-а не ти е правилен (str(b'1') == "b'1'").

    Трябва ти response_part[1].decode() вместо str(response_part[1]) ((b'1').decode() == "1").

    13.05.2010 (променeно 13.05.2010)
  • Мерси много

    13.05.2010