鍍金池/ 問答/Python/ 如何準確的標記一封郵件?

如何準確的標記一封郵件?

運行環(huán)境:python3通過POP3_SSL下載解析QQ郵件。
功能:分析未讀郵件內(nèi)容。
思路:首先標記出每一封郵件,然后跟已讀郵件做對比。
我嘗試過幾種辦法都不能準確的標記:

  • 1.在本地保存已讀郵件數(shù),每次分析跟郵件數(shù)對比。缺陷是如果在QQ郵件客戶端刪除一封郵件又同時收到一封郵件,那么收到的郵件沒法讀取。
  • 2.保存列表id做對比。稱呼可能不太準確,我想表達的是poplib.list()[1][index]其中的后半段數(shù)值。比如一般是這樣:b'4 40871',提取40871。不知道這個數(shù)值怎么生成的,所以擔(dān)心會不會重復(fù)。其次這是在poplib類的數(shù)據(jù)還不是email.message的數(shù)據(jù),怎么跟郵件一一對應(yīng)還沒想好。
  • 3.對比Message-ID。起初我以為這是最佳方案,但遍歷過一些郵件之后,發(fā)現(xiàn)有部分郵件的Message-ID is None。我覺得Message-ID應(yīng)該是很重要的屬性,為什么可以為空呢?想不明白,就不想了,然后我試著給為None的的郵件自己標注一個ID,可是即使給出一個唯一ID又怎么和服務(wù)器上的郵件一一對應(yīng)呢?還有一點是部分為None的郵件不是來自QQ,而是網(wǎng)易。我不知道這是不是郵件服務(wù)器的問題。

以上。如能幫忙解答十分感謝!


解決方案:用hashlib對關(guān)鍵信息取哈希值,我采用的是對發(fā)送時間和發(fā)送人地址取哈希值標記唯一郵件。

回答
編輯回答
好難瘦

hash足夠了,對郵件整個內(nèi)容取一個hash

2017年11月19日 07:31
編輯回答
糖豆豆

用hash試一試

2017年6月25日 18:24