2016-07-12 11 views
0
import getpass, poplib 
user = 'my_user_name' 
Mailbox = poplib.POP3_SSL('pop-mail.outlook.com.com', '995') 
Mailbox.user(user) 
Mailbox.pass_('my_password') 
numMessages = len(Mailbox.list()[1]) 
for i in range(numMessages): 
    for msg in Mailbox.retr(i+1)[1]: 
     print msg 
Mailbox.quit() 

Вышеприведенный код из python POP3 docs, я использовал его и работал. Но это не то, что я хочу. Я хочу читать электронные письма, которые поступают только с определенного адреса. Я не нашел никаких методов в библиотеке POP3 python. Может ли кто-нибудь помочь?Чтение электронной почты Outlook с определенным адресом в python с POP3

+0

POP3 не имеет способностей к фильтру/поиску. Вы должны сами просмотреть электронные письма. – poke

+0

ohh ... как насчет IMAP? это есть? –

ответ

0

Протокол POP3 позволяет только:

  • получить число сообщений
  • получить полное сообщение
  • удалить сообщение

Необязательная команда (TOP тзд п) позволяет для чтения только первых первых строк сообщения. Теоретически вы можете использовать его для полной загрузки сообщений, исходящих из определенного адреса. Эта команда поддерживается модулем poplib, но в руководстве написано:

... К сожалению, TOP плохо указан в RFC и часто нарушается на серверах без бренда. Протестируйте этот метод вручную против серверов POP3, которые вы будете использовать, прежде чем доверять им.

Мой совет даже не пытаются использовать это, вероятно, ломаться рано или поздно. Если вы должны придерживаться POP3, сделайте то, что делают почтовые читатели: загрузите все и отфильтруйте его на стороне клиента. И если вы действительно хотите отфильтровать сервер сообщений, забудьте протокол POP3 и используйте IMAP4, который нацелен на него. Он имеет хорошую поддержку в Python через модуль imaplib