【问题标题】:I want to mark the gmail messages Seen by imaplib我想标记 imaplib 看到的 gmail 消息
【发布时间】:2021-08-31 01:21:18
【问题描述】:

我想通过 python 解析一些 gmail 电子邮件。 我想在阅读消息时将其看到。 我放了这段代码,但它没有标记为已看到?

#read or seen email
 mail.store(i,'+FLAGS', '\\Seen')

你知道我怎样才能让电子邮件查看它是否被查看?

mport imaplib,dateutil.parser
import email

###################### mail read code  ###################

mail=imaplib.IMAP4_SSL('imap.gmail.com',993)    #SMTPは993,POPは995
mail.login('example@co.jp','12123')
mail.select('example.jp',readonly=True)   #mailbox select read only

#UNSEEN read mail
type,data=mail.search(None,'UNSEEN') 

for i in data[0].split():   #data loop
 ok,x=mail.fetch(i,'RFC822')    #mail information get
 ms=email.message_from_string(x[0][1].decode('iso-2022-jp'))    #pass get

 #from get
 ad=email.header.decode_header(ms.get('From'))
 ms_code=ad[0][1]
 if(ms_code!=None):
  address=ad[0][0].decode(ms_code)
  address+=ad[1][0].decode(ms_code)
 else:
  address=ad[0][0]
 
 #Title get
 sb=email.header.decode_header(ms.get('Subject'))
 ms_code=sb[0][1]
 if(ms_code!=None):
  sbject=sb[0][0].decode(ms_code)
 else:
  ms_code=sb[1][1]
  sbject=sb[1][0].decode(ms_code)
 
 #body get
 maintext=ms.get_payload()

 #read email
 mail.store(i,'+FLAGS', '\\Seen')

 print(sbject)
 print(address)
 print(maintext)

【问题讨论】:

    标签: python python-3.x email gmail imaplib


    【解决方案1】:

    我猜您可能想要阅读Gmail API reference on labels,但很可能您需要从您想要标记为已读的电子邮件中删除标签UNREAD。为此,您必须使用 REST API 或 googleapiclient Python 库。

    【讨论】:

    • 感谢您的评论。有了 imaplib 你就不能不对?
    • 我不确定它是否仍然有效,但您可以使用来自 this question 的提示来使用 IMAP 进行操作。不过,我不确定这如何映射到对 imaplib 中特定函数的调用。
    【解决方案2】:

    如果您以只读方式打开邮箱,则无法对其进行更改,包括存储标志:

    mail.select('example.jp',readonly=True)   #mailbox 
    

    删除只读标志。

    【讨论】:

      猜你喜欢
      • 2016-12-09
      • 2011-01-16
      • 2011-09-01
      • 1970-01-01
      • 2012-10-08
      • 2019-05-05
      • 2012-06-15
      • 2014-10-26
      • 2021-10-22
      相关资源
      最近更新 更多