您如何使用Python在收件箱中的每个电子邮件中迭代?
题
我是编程的新手,我正在尝试构建一个自动播放器,以将MSG发送到特定的电子邮件地址。
使用if语句,我可以检查收件箱中某个地址是否有电子邮件,我可以发送电子邮件,但是如果该地址有多个电子邮件该特定地址的电子邮件。
我试图将其用作循环:
for M.search(None, 'From', address) in M.select():
但是我会发现错误:该行上的“无法分配函数调用”
解决方案
正如您声称是编程新手的那样,我的最佳建议是:始终阅读文档。
也许你应该读 教程 第一的。
这 文档 提供了一个示例:
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][3])
M.close()
M.logout()
你有没有尝试过?
关于您的代码:
定义一个 for
环形, ,应该像:
for x in some_data_set:
x
是一个变量,一次容纳一个项目的值(并且仅在for循环主体中访问(一个例外,但这在这里并不重要)。
您所做的与Imaplib模块无关,而只是错误的语法。
顺便提一句。 .select()
选择一个邮箱,仅返回 邮箱中的消息数. 。即仅一个标量值,您无法迭代序列:
imap4.select([邮箱[,readonly]])
选择一个邮箱。返回的数据是邮箱中消息的计数(存在响应)。默认的邮箱是“收件箱”。如果设置了可读标志,则不允许对邮箱进行修改。
(这确实与Imaplib模块有关;))
不隶属于 StackOverflow