raspberry - send email python smtplib
Comprobando el correo electrónico con Python (7)
Estoy interesado en activar una determinada acción al recibir un correo electrónico de una dirección específica con un tema específico. Para poder hacerlo, necesito implementar la supervisión de mi buzón de correo, revisando cada correo entrante (en particular, uso gmail). ¿Cual es la forma mas fácil de hacer eso?
Encontré un buen fragmento cuando quería hacer lo mismo (y el ejemplo usa gmail). También mira los resultados de búsqueda de google en esto.
Gmail ofrece la posibilidad de conectarse a través de POP, que puede activar en el panel de configuración de Gmail. Python puede hacer conexiones a través de POP con bastante facilidad:
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()
Solo necesitaría ejecutar este script como un trabajo cron. No estoy seguro de qué plataforma está, por lo que YMMV en cuanto a cómo se hace eso.
Gmail proporciona una feed atómica para nuevos mensajes de correo electrónico. Debería poder monitorear esto autenticando con pycURL (o alguna otra biblioteca de red) y bajando el feed. Hacer una solicitud GET para cada nuevo mensaje debe marcarlo como leído, por lo que no tendrá que hacer un seguimiento de los correos electrónicos que ha leído.
La gente parece estar entusiasmada con Lamson:
https://github.com/zedshaw/lamson
Es un servidor SMTP escrito completamente en Python. Estoy seguro de que podría aprovechar eso para hacer todo lo que necesita, simplemente reenvíe los mensajes de Gmail a ese servidor SMTP y luego haga lo que desee.
Sin embargo, creo que probablemente sea más fácil hacer la recomendación de alimentación de ATOM anterior.
EDIT: Lamson ha sido abandonado
Recientemente resolví este problema usando procmail y python
Lea la documentación para procmail. Puedes decirle que envíe todo el correo electrónico entrante a un script de Python como este en un archivo especial de configuración de procmail
:0:
| ./scripts/ppm_processor.py
Python tiene un paquete de "correo electrónico" disponible que puede hacer todo lo que pueda desear hacer con el correo electrónico. Lea sobre los siguientes ...
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
Si bien no es específico de Python, ¡siempre me ha encantado procmail donde sea que pueda instalarlo ...!
Solo use como algunas de sus líneas de acción para las condiciones que elija | pathtoyourscript
| pathtoyourscript
(barra vertical AKA seguido del guión que desea ejecutar en esos casos) y su correo se canaliza, en las condiciones que elija, al guión de su elección, para que haga lo que quiera, difícil de pensar de un enfoque más general para "desencadenar acciones de su elección al recibir correos que cumplan con sus condiciones específicas. Por supuesto, no hay límites a la cantidad de condiciones que puede verificar, cuántas líneas de acción puede activar una sola condición (simplemente encierre todo las líneas de acción que desee en { }
llaves), etc., etc.
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'')