1. 程式人生 > >關於用python 的imaplib提取自己163,qq郵箱的內容

關於用python 的imaplib提取自己163,qq郵箱的內容

前一段時間,準備寫一個垃圾郵箱分類器,就想通過python的imaplib提取自己的郵件。
我先在163郵箱開通了imap,並開通了密碼
具體見這
然後敲程式碼
基本操作為

    import imaplib
conn=imaplib.IMAP4_SSL('imap.163.com')
conn.login('*******@163.com','**********')
print conn.list()

result, message =conn.select()
print result, message
typeq, data = conn.search(None, 'ALL'
)

但是就是報錯報錯

    error: command SELECT illegal in state LOGOUT, only allowed in states AUTH, SELECTED

後來進行了如下操作

result, message =conn.select()
print result, message   

結果為

    NO ['SELECT The login is not safe! Please update your mail client: http://mail.163.com/dashi']

他說這不安全,要用他的網易郵箱大師

沒辦法,改為qq郵箱

見這

    import imaplib
conn=imaplib.IMAP4_SSL('imap.qq.com')
conn.login('********@qq.com','************')
print conn.list()

result, message =conn.select()
print result, message
#conn.logout() 
typeq, data = conn.search(None, 'ALL')

結果正確

    OK ['155']
  • conn.select()返回的是 第一個返回值(選中郵箱操作是否正確),第二個返回值(若操作正確,總共選中了多少個,若不準確,告訴你那有問題)。

  • conn.search()返回的是 第一個返回值(操作是否正確),第二個返回值為(那總共選取的郵箱的個數的序列)

總共正確結果為:

    runfile('D:/my study/Project/spam-filter-master/myself.py', wdir='D:/my study/Project/spam-filter-master')
('OK', ['(\\HasNoChildren) "/" "INBOX"', '(\\NoSelect \\HasChildren) "/" "&UXZO1mWHTvZZOQ-"', '(\\HasNoChildren) "/" "Sent Messages"', '(\\HasNoChildren) "/" "Drafts"', '(\\HasNoChildren) "/" "Deleted Messages"', '(\\HasNoChildren) "/" "Junk"', '(\\HasNoChildren) "/" "&UXZO1mWHTvZZOQ-/QQ&kK5O9ouilgU-"'])
OK ['155']

typeq, data = conn.search(None, 'ALL')

print typeq
OK

print data
['1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155']

注意弄完了後要正確退出

    conn.logout()
    Out[33]: ('BYE', ['Autologout; idle for too long'])