Мне интересно инициировать определенное действие при получении электронной почты с определенного адреса по определенной теме. Чтобы это сделать, мне нужно реализовать мониторинг моего почтового ящика, проверяя каждую входящую почту (в частности, я использую gmail). Что это самый простой способ сделать это?Проверка электронной почты с помощью Python
ответ
Gmail предоставляет возможность подключения через POP, которые можно включить в панели настроек Gmail. Python может сделать соединение через POP довольно легко:
import poplib
from email import parser
pop_conn = poplib.POP3_SSL('pop.gmail.com')
pop_conn.user('username')
pop_conn.pass_('password')
#Get messages from server:
messages = [pop_conn.retr(i) for i in range(1, len(pop_conn.list()[1]) + 1)]
# Concat message pieces:
messages = ["\n".join(mssg[1]) for mssg in messages]
#Parse message intom an email object:
messages = [parser.Parser().parsestr(mssg) for mssg in messages]
for message in messages:
print message['subject']
pop_conn.quit()
Вам просто нужно будет запустить этот сценарий как хрон. Не знаете, на какой платформе вы работаете, поэтому YMMV о том, как это делается.
Я нашел pretty good snippet, когда захотел сделать то же самое (и пример использует gmail). Также посмотрите на это google search results.
Ссылка не работает. – Elazar
такой же ссылка из web.archive.org: [Быстрая и грязная проверка сервера электронной почты, python] (http://web.archive.org/web/20090119142342/http://snippets.dzone.com/posts/show/4024) – davedwards
Gmail предоставляет атом feed для новых сообщений электронной почты. Вы должны иметь возможность отслеживать это путем аутентификации с помощью py cURL (или какой-либо другой сетевой библиотеки) и вытаскивать фид. Выполнение запроса GET для каждого нового сообщения должно означать его как прочитанное, поэтому вам не нужно будет отслеживать, какие электронные письма вы прочитали.
Любая идея, как отправить правильная информация для авторизации? – PascalVKooten
@PascalvKooten поздний ответ, но формат https: //
@Whitebird По-прежнему стоит исследовать. Думаю, мой интерес к этому асинхронен; теперь, когда у меня есть ответ, я все равно могу побеседовать с ним^_^Спасибо! – PascalVKooten
Хотя я не был специфичен для Python, я всегда любил procmail везде, где я мог его установить ...!
Просто используйте как некоторые из ваших линий действий для условий по вашему выбору. | pathtoyourscript
(вертикальная полоса AKA, за которой следует сценарий, который вы хотите исполнить в этих случаях), и ваша почта получает в соответствии с условиями вашего выбора сценарий по вашему выбору, чтобы он делал все, что захотел, - трудно думать о более общем подходе к «инициировать действия по вашему выбору после получения писем, которые отвечают вашим конкретным условиям! Конечно, нет ограничений на то, сколько условий вы можете проверить, сколько строк действий одно условие может вызвать (только приложить все линии действия, которые вы хотите в { }
скобки), и т.д., и т.д.
Procmail действительно не решит проблему запуска действия (если данное действие не отправляет сообщение). –
@J. Питерсон, ты шутишь, правда ?! '| pathtoyourscript', и вы можете начать свой сценарий выбора и направить свою почту на него, когда ваши любимые условия будут удовлетворены, а скрипт может делать что угодно - как это НЕ «запускает действие» ?! –
недавно я решил эту проблему с помощью Procmail и питона
Прочитайте документацию для procmail. Вы можете сказать ему, чтобы отправить все входящие сообщения электронной почты для питона сценария, как это в специальный Procmail конфигурационный файл
:0:
| ./scripts/ppm_processor.py
Python имеет «электронный» пакет, доступный, который может сделать все, что вы, возможно, хотят сделать с электронной почтой. Читайте на следующих из них ....
from email.generator import Generator
from email import Message
from email.MIMEBase import MIMEBase
from email.MIMEText import MIMEText
from email.mime.multipart import MIMEMultipart
Люди, кажется, накачанный о Лэмсон:
https://github.com/zedshaw/lamson
Это SMTP-сервер полностью написанный на Python. Я уверен, что вы могли бы использовать это, чтобы делать все, что вам нужно - просто пересылайте сообщения Gmail на этот SMTP-сервер, а затем делайте то, что хотите.
Однако, я думаю, что, возможно, проще всего выполнить рекомендацию по подаче ATOM выше.
EDIT: Lamson был оставлен
лосось - это вилка, пытаясь достичь питона 3 - это совсем недавно коснулось - https://github.com/moggers87/salmon – user2692263
print('please enter str')
def email(n=str):
if ('@' and '.') in n:
z=n.find('@')
c=n.find('.')
if type(n[:z] and n[z:c] and n[c:])==str:
print('valid email')
else:
print('Invalid email')
else:
print('Invalid email')
Это самая страшная, самая неправильная и неправильная проверка электронной почты, которую я когда-либо видел; если бы я указал на его ошибки, я бы не знал, с чего начать. Пожалуйста, никогда не используйте это нигде. – Todor
Я вернулся к этому обрыву, потому что что-то беспокоило меня ... Таким образом, не только общий алгоритм проверки является ошибочным, но и логическим op в if-s является неправильным. if ('@' и '.') В n: всегда будет выглядеть только для '.', Потому что булевский op будет '@' и ',' будет оцениваться как '.'. И не заставляйте меня начинать со второго, если. – Todor
- 1. проверка локальных сообщений электронной почты с помощью Python
- 2. JavaScript Проверка электронной почты с помощью Regex
- 3. Проверка адреса электронной почты с помощью regex
- 4. Проверка электронной почты с помощью javascript
- 5. Проверка адреса электронной почты с помощью regex
- 6. Проверка электронной почты с помощью HTML5
- 7. Проверка электронной почты с помощью js
- 8. Проверка электронной почты с помощью js
- 9. Проверка подлинности электронной почты с помощью php
- 10. Jquery Проверка с помощью электронной почты
- 11. Проверка электронной почты с помощью AngularJS 1.2.0
- 12. JQuery проверка электронной почты с помощью RegEx
- 13. Проверка электронной почты с помощью php
- 14. проверка электронной почты с помощью javascript
- 15. Проверка идентификатора электронной почты с помощью jquery
- 16. Проверка электронной почты с помощью ember.js
- 17. Проверка адреса электронной почты с помощью JavaScript
- 18. Проверка электронной почты HTML?
- 19. PHP проверка электронной почты
- 20. AngularFire2 Проверка электронной почты
- 21. Проверка состояния шифрования электронной почты.
- 22. PDO проверка электронной почты
- 23. Проверка электронной почты с угловым
- 24. Проверка JQuery - проверка электронной почты с помощью ajax-звонка
- 25. Проверка формата электронной почты в python
- 26. Проверка подлинности простой электронной почты Python
- 27. Проверка действительности электронной почты в django/python
- 28. Проверка электронной почты php
- 29. Проверка электронной почты Ionic2
- 30. zend2 проверка электронной почты
Большое спасибо !!! Он отлично работает. Единственная проблема, с которой я сталкиваюсь сейчас, это то, что мне нужно получить только новые сообщения. Конечно, можно получить все сообщения, а затем сравнить старый список с новым. Однако мне интересно , если есть лучший способ сделать это, если для этого был встроенный метод. – Sasha
В режиме POP gmail позволяет вам получать сообщение только один раз. Последующие соединения не покажут вам сообщение. Если одна из двух вещей не происходит: у вас включен режим «недавнего режима»? См. Здесь: http://mail.google.com/support/bin/answer.py?answer=47948 о том, как его отключить. В качестве альтернативы, если gmail на самом деле дает вам один и тот же адрес электронной почты каждый раз, это может быть связано с тем, что метод quit() не вызывается в вашем поп-соединении. Есть ли исключение, которое может быть поднято, но не поймано до вызова? Затем gmail отправит вам одну и ту же почту. – mazelife
Выход Нет. – GLHF