现在它是一个gmail盒子,但迟早我希望它可以扩展.
我想在其他地方同步一个实时个人邮箱(收件箱和发件箱)的副本,但我不想影响unread任何未读邮件的状态.
什么类型的访问将使这最容易?如果IMAP会影响读取状态,我找不到任何信息,但似乎我可以手动将消息重置为未读.按定义弹出不会影响未读状态,但似乎没有人使用pop访问他们的Gmail,为什么?
我使用Python的imaplib从Gmail帐户中提取邮件......但是我收到了一封包含这个令人困惑的文本正文的电子邮件:
> RGF0ZSBldCBoZXVyZTogICAgICAgICAgICAgICAgICAgICAgICAgICAyMi8wOC8yMDEwIDE0
> OjMzOjAzIEdNVCBVbmtub3duDQpQcsOpbm9tOiAgICAgICAgICAgICAgICAgICAgICAgICAg
> ICAgICAgICAgamFjaW50bw0KTm9tOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
> ICAgICBjYXJ2YWxobw0KRS1NYWlsOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Run Code Online (Sandbox Code Playgroud)
谁能帮我从我的邮箱中读取这个文件......
谢谢
罗
我正在用Python开发一个电子邮件客户端.
是否可以通过电子邮件标题检查电子邮件是否包含附件而无需下载整个电子邮件?
我正在尝试使用python的imaplib创建一个电子邮件并将其发送到具有特定名称的邮箱,例如INBOX.任何人都有一些很好的建议:).
我使用以下方法从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) 我正在使用 IMAPClient (Python) 从我的电子邮件服务器中检索电子邮件,方法是检查标有“\Recent”的电子邮件。阅读电子邮件后,电子邮件服务器会自动将电子邮件标志设置为“\Seen”。
我想要做的是将电子邮件标志重置为“\Recent”,因此当我直接在服务器上查看电子邮件时,它仍然显示为未读。
我发现当我尝试使用 IMAPClient 的“set_flag”定义将“\Recent”标志添加到电子邮件时,IMAPClient 抛出异常。添加任何其他标志都可以正常工作。
IMAPClient 文档说“最近”标志是只读的,但我想知道是否还有办法将电子邮件标记为未读。
根据我的理解,像 Thunderbird 这样的电子邮件软件允许您将电子邮件设置为未读,所以我认为必须有办法做到这一点。
谢谢。
概述:当在 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 的内置部分 …
我想将一封电子邮件从我的收件箱移到垃圾箱文件夹,我不想永久删除该电子邮件,我希望它经历在垃圾箱中等待 30 天才能永久删除的过程。
mail = imaplib.IMAP4_SSL('imap.gmail.com')
mail.login("example@gmail.com", "example")
Run Code Online (Sandbox Code Playgroud)
mail.select("inbox")
result, data = mail.uid('search', None, "ALL")
uidList = data[0].split()
Run Code Online (Sandbox Code Playgroud)
#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)
newUidListfor uid in newUidList:
mail.uid('STORE',uid, '+FLAGS', '(\\Deleted)')
Run Code Online (Sandbox Code Playgroud)
我认为这条线mail.uid('STORE',uid, '+FLAGS', '(\\Deleted)')可以解决问题(因为这是我在互联网上找到的)。但是在这里问这个问题,你可能已经正确地猜到了它没有。
当我执行此脚本时,电子邮件按计划从收件箱中消失了。但是当我访问垃圾文件夹时,那里什么也没有。所以我想也许它们被永久删除了。
但他们不是。当我看到我的电子邮件存储空间正在快速填满时,我注意到了这一点,这意味着我的电子邮件仍在某处。
我进入“所有电子邮件”文件夹,它们就在那里。
mail.uid('STORE',uid, '+FLAGS', '(\\Deleted)')谢谢您的意见 :)
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 为特定关键字从 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)