我是编程新手,我正在尝试构建一个autorespoder来将msg发送到特定的电子邮件地址。
使用if语句,我可以检查收件箱中是否有来自某个地址的电子邮件,我可以发送电子邮件,但如果该地址有多封电子邮件,我该如何制作for循环来发送来自该特定地址的每封电子邮件的电子邮件。
我尝试将其用作循环:
for M.search(None, 'From', address) in M.select():
但我得到错误:“无法分配到该行的函数调用”
答案 0 :(得分:4)
正如您声称自己是编程新手,我最好的建议是:始终阅读文档。
也许你应该首先阅读tutorial。
documentation提供了一个示例:
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
loop时,应该是:
for x in some_data_set:
x
是一个变量,它一次保存一个项的值(并且只能在for循环体中访问(有一个例外,但这在这里并不重要)。)。
您正在做的事与imaplib模块无关,只是语法错误。
顺便说一下。 .select()
选择一个邮箱,只返回邮箱中的邮件数。即只是一个标量值,没有可以迭代的序列:
IMAP4.select([mailbox [,readonly]])
选择一个邮箱。返回的数据是邮箱中的邮件计数(EXISTS响应)。默认邮箱是“INBOX”。如果设置了只读标志,则不允许对邮箱进行修改。
(这确实与imaplib模块有关;))