2

我对编程完全陌生,我正在尝试构建一个自动回复器以将消息发送到特定的电子邮件地址。

使用 if 语句,我可以检查收件箱中是否有来自某个地址的电子邮件,我可以发送一封电子邮件,但是如果该地址有多封电子邮件,我如何制作一个 for 循环来为每个地址发送一封电子邮件来自该特定地址的电子邮件。

我尝试将其用作循环:

for M.search(None, 'From', address) in M.select(): 

但我收到错误:该行上的“无法分配给函数调用”

4

1 回答 1

6

正如您声称是编程新手,我最好的建议是:始终阅读文档。

也许您应该先阅读教程


文档提供了一个示例:

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([mailbox[, readonly]])
选择一个邮箱。返回的数据是邮箱中的消息数(EXISTS 响应)。默认邮箱是“收件箱”。如果设置了只读标志,则不允许修改邮箱。

(这确实与 imaplib 模块有关;))

于 2010-06-06T09:10:30.650 回答