tldr:有人可以告诉我如何正确格式化这个Python iMAP示例,以便它可以工作吗?
这 https://docs.python.org/2.4/lib/imap4-example.html
import getpass, imaplib M = imaplib.IMAP4() M.login(getpass.getuser(), getpass.getpass()) M.select() typ, data = M.search(None, 'ALL') for num in data[0].split(): typ, data = M.fetch(num, '(RFC822)') print 'Message %s\n%s\n' % (num, data[0][1]) M.close() M.logout()
假设我的电子邮件是“email@gmail.com”,密码是“密码”,这应该怎么样?我试过M.login(getpass.getuser(email@gmail.com), getpass.getpass(password))
它超时了在这里完成newb,所以我很可能错过了一些明显的东西(比如先创建一个iMAP对象?不确定)。
答案 0 :(得分:11)
import imaplib
# you want to connect to a server; specify which server
server= imaplib.IMAP4_SSL('imap.googlemail.com')
# after connecting, tell the server who you are
server.login('email@gmail.com', 'password')
# this will show you a list of available folders
# possibly your Inbox is called INBOX, but check the list of mailboxes
code, mailboxen= server.list()
print mailboxen
# if it's called INBOX, then…
server.select("INBOX")
其余代码似乎都是正确的。
答案 1 :(得分:11)
这是我用来从我的邮箱中获取logwatch信息的脚本。 Presented at LFNW 2008 -
#!/usr/bin/env python
''' Utility to scan my mailbox for new mesages from Logwatch on systems and then
grab useful info from the message and output a summary page.
by Brian C. Lane <bcl@brianlane.com>
'''
import os, sys, imaplib, rfc822, re, StringIO
server ='mail.brianlane.com'
username='yourusername'
password='yourpassword'
M = imaplib.IMAP4_SSL(server)
M.login(username, password)
M.select()
typ, data = M.search(None, '(UNSEEN SUBJECT "Logwatch")')
for num in data[0].split():
typ, data = M.fetch(num, '(RFC822)')
# print 'Message %s\n%s\n' % (num, data[0][1])
match = re.search( "^(Users logging in.*?)^\w",
data[0][1],
re.MULTILINE|re.DOTALL )
if match:
file = StringIO.StringIO(data[0][1])
message = rfc822.Message(file)
print message['from']
print match.group(1).strip()
print '----'
M.close()
M.logout()
答案 2 :(得分:2)
您是否忘记指定IMAP主机和端口?使用某些效果:
M = imaplib.IMAP4_SSL( 'imap.gmail.com' )
或,
M = imaplib.IMAP4_SSL()
M.open( 'imap.gmail.com' )
答案 3 :(得分:0)
而不是M.login(getpass.getuser(email@gmail.com), getpass.getpass(password))
,您需要使用M.login('email@gmail.com', 'password')
,即普通字符串(或更好,包含它们的变量)。您的尝试实际上根本不起作用,因为getpass
getuser
没有参数但只返回用户登录名。并且email@gmail.com
甚至不是有效的变量名称(您没有将其放入引号)...