【问题标题】:How do you iterate through each email in your inbox using python?如何使用 python 遍历收件箱中的每封电子邮件?
【发布时间】:2011-02-28 08:16:48
【问题描述】:

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

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

我尝试将其用作循环:

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

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

【问题讨论】:

    标签: python email iterator imaplib


    【解决方案1】:

    由于您声称自己是编程新手,我最好的建议是:始终阅读文档。

    也许你应该先阅读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() 选择一个邮箱并且只返回邮箱中的邮件数。 IE。只是一个标量值,没有可以迭代的序列:

    IMAP4.select([邮箱[,只读]])
    选择一个邮箱。返回的数据是邮箱中的消息计数(EXISTS 响应)。默认邮箱是“收件箱”。如果设置了只读标志,则不允许修改邮箱。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-29
      • 1970-01-01
      • 2019-05-29
      • 2021-04-09
      • 2015-10-21
      • 1970-01-01
      • 2017-09-02
      • 2014-10-19
      相关资源
      最近更新 更多