标签: imaplib

获取电子邮件未读内容,而不会影响未读状态

现在它是一个gmail盒子,但迟早我希望它可以扩展.

我想在其他地方同步一个实时个人邮箱(收件箱和发件箱)的副本,但我不想影响unread任何未读邮件的状态.

什么类型的访问将使这最容易?如果IMAP会影响读取状态,我找不到任何信息,但似乎我可以手动将消息重置为未读.按定义弹出不会影响未读状态,但似乎没有人使用pop访问他们的Gmail,为什么?

python gmail pop3 imap imaplib

4
推荐指数
1
解决办法
4860
查看次数

这段文字的编码是什么?

我使用Python的imaplib从Gmail帐户中提取邮件......但是我收到了一封包含这个令人困惑的文本正文的电子邮件:

> RGF0ZSBldCBoZXVyZTogICAgICAgICAgICAgICAgICAgICAgICAgICAyMi8wOC8yMDEwIDE0
> OjMzOjAzIEdNVCBVbmtub3duDQpQcsOpbm9tOiAgICAgICAgICAgICAgICAgICAgICAgICAg
> ICAgICAgICAgamFjaW50bw0KTm9tOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
> ICAgICBjYXJ2YWxobw0KRS1NYWlsOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Run Code Online (Sandbox Code Playgroud)

谁能帮我从我的邮箱中读取这个文件......

谢谢

python gmail encoding character imaplib

4
推荐指数
1
解决办法
1040
查看次数

是否可以通过电子邮件标题检查电子邮件是否包含附件?

我正在用Python开发一个电子邮件客户端.

是否可以通过电子邮件标题检查电子邮件是否包含附件而无需下载整个电子邮件?

python email imap imaplib

4
推荐指数
2
解决办法
1264
查看次数

如何使用imaplib创建电子邮件并将其发送到特定邮箱

我正在尝试使用python的imaplib创建一个电子邮件并将其发送到具有特定名称的邮箱,例如INBOX.任何人都有一些很好的建议:).

python imaplib

4
推荐指数
2
解决办法
1万
查看次数

Python电子邮件引用 - 可打印编码问题

我使用以下方法从Gmail中提取电子邮件:

def getMsgs():
 try:
    conn = imaplib.IMAP4_SSL("imap.gmail.com", 993)
  except:
    print 'Failed to connect'
    print 'Is your internet connection working?'
    sys.exit()
  try:
    conn.login(username, password)
  except:
    print 'Failed to login'
    print 'Is the username and password correct?'
    sys.exit()

  conn.select('Inbox')
  # typ, data = conn.search(None, '(UNSEEN SUBJECT "%s")' % subject)
  typ, data = conn.search(None, '(SUBJECT "%s")' % subject)
  for num in data[0].split():
    typ, data = conn.fetch(num, '(RFC822)')
    msg = email.message_from_string(data[0][1])
    yield walkMsg(msg)

def walkMsg(msg):
  for part in msg.walk():
    if part.get_content_type() != "text/plain":
      continue …
Run Code Online (Sandbox Code Playgroud)

python email encoding imaplib

4
推荐指数
2
解决办法
4731
查看次数

如何使用 IMAPClient 将电子邮件标志更改为“最近”

我正在使用 IMAPClient (Python) 从我的电子邮件服务器中检索电子邮件,方法是检查标有“\Recent”的电子邮件。阅读电子邮件后,电子邮件服务器会自动将电子邮件标志设置为“\Seen”。

我想要做的是将电子邮件标志重置为“\Recent”,因此当我直接在服务器上查看电子邮件时,它仍然显示为未读。

我发现当我尝试使用 IMAPClient 的“set_flag”定义将“\Recent”标志添加到电子邮件时,IMAPClient 抛出异常。添加任何其他标志都可以正常工作。

IMAPClient 文档说“最近”标志是只读的,但我想知道是否还有办法将电子邮件标记为未读。

根据我的理解,像 Thunderbird 这样的电子邮件软件允许您将电子邮件设置为未读,所以我认为必须有办法做到这一点。

谢谢。

python imaplib

4
推荐指数
1
解决办法
5543
查看次数

为什么 imaplib 在每封电子邮件后返回一个单括号?

概述:当在 Python 中通过 imap 获取电子邮件时imaplib,返回的有效负载是电子邮件元组列表......b')'每个元组之间有一个字节。

我使用您的标准 imaplibfetch调用,并给出以逗号分隔的 UID 字节字符串:

resp, data = mailbox.fetch(b'1,2,3'), 'RFC822')
Run Code Online (Sandbox Code Playgroud)

然而,data看起来像:

[ 
  (b'1 (BODY[HEADER.FIELDS (DATE TO CC FROM SUBJECT)] {181}',
    b'Date: Thu, 18 Jul 2013 16:08:07 -0700 From: Blah Blah\r\n\r\n'
  ),
  b')',
  (b'1 (BODY[HEADER.FIELDS (DATE TO CC FROM SUBJECT)] {181}',
    b'Date: Thu, 18 Jul 2013 16:08:07 -0700 From: Blah Blah\r\n\r\n'
  ),
  b')',
  ...
]
Run Code Online (Sandbox Code Playgroud)

所以现在,当我迭代该列表时,我必须跳过所有其他元素以避免b')'. 显然,这并不难……但感觉好像我做错了什么,或者imaplib应该更好地解析这个右括号。

为什么会有这个括号,有没有办法更正确地使用 IMAP 来消除它?


想法:

看起来右括号是RFC822 的内置部分 …

python imap imaplib

4
推荐指数
1
解决办法
566
查看次数

Python 3:通过 uid (imaplib) 将电子邮件移至垃圾箱

我想将一封电子邮件从我的收件箱移到垃圾箱文件夹,我不想永久删除该电子邮件,我希望它经历在垃圾箱中等待 30 天才能永久删除的过程。

1.登录:

mail = imaplib.IMAP4_SSL('imap.gmail.com')
mail.login("example@gmail.com", "example")
Run Code Online (Sandbox Code Playgroud)

2.在我的收件箱中得到了uid列表:

mail.select("inbox")
result, data = mail.uid('search', None, "ALL")
uidList = data[0].split()
Run Code Online (Sandbox Code Playgroud)

3.处理过这些邮件:

#processEmails returns the uids of the emails that I need
#not really important for the purposes of this question

newUidList = processEmails(uidList)
Run Code Online (Sandbox Code Playgroud)

4.删除邮件中的邮件 newUidList

for uid in newUidList:
    mail.uid('STORE',uid, '+FLAGS', '(\\Deleted)')
Run Code Online (Sandbox Code Playgroud)

我认为这条线mail.uid('STORE',uid, '+FLAGS', '(\\Deleted)')可以解决问题(因为这是我在互联网上找到的)。但是在这里问这个问题,你可能已经正确地猜到了它没有。

发生了什么事?

当我执行此脚本时,电子邮件按计划从收件箱中消失了。但是当我访问垃圾文件夹时,那里什么也没有。所以我想也许它们被永久删除了。

但他们不是。当我看到我的电子邮件存储空间正在快速填满时,我注意到了这一点,这意味着我的电子邮件仍在某处。

我进入“所有电子邮件”文件夹,它们就在那里。

所以我的问题是...

  1. 我如何得到我想要的结果?这是通过其 UID 将电子邮件移动到垃圾箱文件夹。
  2. 为什么它没有做我认为它会做的事情?我要求解释这条线mail.uid('STORE',uid, '+FLAGS', '(\\Deleted)')

而最重要的是...

谢谢您的意见 :)

python email imaplib python-3.x

4
推荐指数
1
解决办法
4967
查看次数

imaplib.error:命令SEARCH在状态AUTH中非法,只允许在SELECTED状态

def connect_imap():
    m = imaplib.IMAP4_SSL("imap.gmail.com", 993)
    print("{0} Connecting to mailbox via IMAP...".format(datetime.datetime.today().strftime("%Y-%m-%d %H:%M:%S")))
    details = login_credentials()
    m.login(details[0], details[1])
    return m


m = connect_imap()
typ, data = m.search(None, 'ALL')
m.close()
m.logout()
Run Code Online (Sandbox Code Playgroud)

上面代码的输出是:

2016-08-24 10:55:34 Connecting to mailbox via IMAP...
    Traceback (most recent call last):
      File "/home/zoikmail/Desktop/test.py", line 25, in <module>
        typ, data = m.search(None, 'ALL')
      File "/usr/lib/python2.7/imaplib.py", line 640, in search
        typ, dat = self._simple_command(name, *criteria)
      File "/usr/lib/python2.7/imaplib.py", line 1088, in _simple_command
        return self._command_complete(name, self._command(name, *args))
      File "/usr/lib/python2.7/imaplib.py", line 838, in …
Run Code Online (Sandbox Code Playgroud)

python imaplib

3
推荐指数
1
解决办法
8753
查看次数

Python - 获取邮件的日期时间 - Gmail

我试图使用 python 为特定关键字从 Gmail 下载附件,代码如下,

def read_email_from_gmail():
mail = imaplib.IMAP4_SSL(imap_url)
mail.login(user, password)
mail.select('"[Gmail]/All Mail"')
print("Login into Mailbox")
result, data = mail.search(None, '(SUBJECT "Contract note")')
count = 0
for num in data[0].split():
    result, data = mail.fetch(num, "(RFC822)")
    raw_email_string = data[0][1].decode('utf-8')
    msg = email.message_from_string(raw_email_string)
    for part in msg.walk():
        if part.get_content_type() == "text/plain":
            print(part.get_payload(decode=True))

        if part.get_content_maintype() == 'multipart':
            continue
        if part.get('Content-Disposition') is None:
            continue
        fileName = part.get_filename()
        print(part.get_)
        fileName = fileName+str(count)+str('.pdf')
        count = count + 1
        if bool(fileName):
            filePath = os.path.join(attachment_dir, fileName)
            with …
Run Code Online (Sandbox Code Playgroud)

python gmail imaplib

3
推荐指数
1
解决办法
3626
查看次数

标签 统计

imaplib ×10

python ×10

email ×3

gmail ×3

imap ×3

encoding ×2

character ×1

pop3 ×1

python-3.x ×1