Как вы перебираете каждое письмо в вашем почтовом ящике, используя python? - PullRequest
1 голос
/ 06 июня 2010

Я совершенно новичок в программировании и пытаюсь создать автоответчик для отправки сообщения на определенный адрес электронной почты.

Используя оператор if, я могу проверить, есть ли электронная почта с определенного адреса во входящей почте, и могу отправить электронное письмо, но если с этого адреса есть несколько электронных писем, как я могу сделать цикл for для отправки электронная почта для каждого электронного письма с этого конкретного адреса.

Я пытался использовать это как цикл:

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

но я получаю ошибку: "невозможно назначить вызов функции" в этой строке

1 Ответ

4 голосов
/ 06 июня 2010

Поскольку вы заявляете, что плохо знакомы с программированием, мой лучший совет: всегда читайте документацию.

И, возможно, вам следует сначала прочитать учебник .


Документация содержит пример:

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, а с неправильным синтаксисом.

Btw. .select() выбирает почтовый ящик и возвращает только количество сообщений в почтовом ящике . То есть просто скалярное значение, без последовательности, которую вы могли бы перебрать:

IMAP4.select ([почтовый ящик [, только для чтения]])
Выберите почтовый ящик. Возвращаемые данные - это количество сообщений в почтовом ящике (ответ EXISTS). Почтовый ящик по умолчанию - «INBOX». Если установлен флаг только для чтения, изменения в почтовом ящике запрещены.

(Это действительно относится к модулю imaplib;))

...