test hacer formularios formulario enviar crear con como python django email pop3 django-email

python - hacer - django para enviar Y recibir correo electrónico?



django send test email (3)

Django está realmente pensado como un servidor web (bueno, como un marco que se adapta a un servidor web), no como un servidor de correo electrónico. Supongo que podría poner algún código en una aplicación web de Django que inicie un servidor de correo electrónico, usando el tipo de código que se muestra en esa pregunta a la que se vinculó, pero realmente no lo recomendaría; es un abuso de las capacidades de la programación web dinámica.

La práctica habitual es tener servidores web y de correo electrónico por separado, y para eso querrá ver algo como Sendmail o (mejor aún) Postfix. Para POP3 también necesitarías algo como Dovecot o Courier, creo. (Sin duda, es posible que el servidor de correo electrónico notifique a su aplicación web cuando se reciben correos electrónicos para que pueda actuar sobre ellos, si eso es lo que desea hacer).

EDITAR : en respuesta a sus comentarios: sí, está intentando hacer (o al menos usar) un servidor de correo electrónico. Un servidor de correo electrónico es simplemente un programa que recibe correos electrónicos (y puede ser capaz de enviarlos también, pero no es necesario).

Definitivamente, podría escribir un pequeño servidor de correo electrónico en Python que acaba de recibir estos correos electrónicos y guardar las imágenes en el sistema de archivos o en una base de datos o lo que sea. (Puede valer la pena hacer una nueva pregunta, sobre) Pero no la haga parte de su aplicación web Django; mantenerlo como su propio programa separado.

Me he familiarizado bastante con las capacidades de envío de correo electrónico de django, pero no he visto nada al recibir y procesar correos electrónicos de los usuarios. ¿Esta funcionalidad está disponible?

Algunas búsquedas de Google no han arrojado resultados muy prometedores. Aunque encontré esto: recibir y enviar correos electrónicos en python

¿Voy a tener que hacer mi propio? si es así, publicaré esa aplicación más rápido de lo que puedas decir ... lo que sea que digas.

gracias, Jim

actualización : no estoy tratando de crear un servidor de correo electrónico, solo necesito agregar algunas funcionalidades donde pueda enviar una imagen al sitio y hacer que aparezca en su cuenta.


Sé que esta pregunta ya es bastante antigua, pero pensé que agregaría para referencia futura que podría darle una oportunidad a http://cloudmailin.com . Tenemos bastantes usuarios de django que usan el sistema y debería ser un poco más simple que la solución propuesta.


Hay una aplicación llamada jutda-helpdesk que usa poplib y imaplib de imaplib para procesar los correos electrónicos entrantes. Solo debe tener una cuenta en algún lugar con acceso POP3 o IMAP.

Esto está adaptado de get_email.py :

def process_mail(mb): print "Processing: %s" % q if mb.email_box_type == ''pop3'': if mb.email_box_ssl: if not mb.email_box_port: mb.email_box_port = 995 server = poplib.POP3_SSL(mb.email_box_host, int(mb.email_box_port)) else: if not mb.email_box_port: mb.email_box_port = 110 server = poplib.POP3(mb.email_box_host, int(mb.email_box_port)) server.getwelcome() server.user(mb.email_box_user) server.pass_(mb.email_box_pass) messagesInfo = server.list()[1] for msg in messagesInfo: msgNum = msg.split(" ")[0] msgSize = msg.split(" ")[1] full_message = "/n".join(server.retr(msgNum)[1]) # Do something with the message server.dele(msgNum) server.quit() elif mb.email_box_type == ''imap'': if mb.email_box_ssl: if not mb.email_box_port: mb.email_box_port = 993 server = imaplib.IMAP4_SSL(mb.email_box_host, int(mb.email_box_port)) else: if not mb.email_box_port: mb.email_box_port = 143 server = imaplib.IMAP4(mb.email_box_host, int(mb.email_box_port)) server.login(mb.email_box_user, mb.email_box_pass) server.select(mb.email_box_imap_folder) status, data = server.search(None, ''ALL'') for num in data[0].split(): status, data = server.fetch(num, ''(RFC822)'') full_message = data[0][1] # Do something with the message server.store(num, ''+FLAGS'', ''//Deleted'') server.expunge() server.close() server.logout()

mb es solo un objeto para almacenar toda la información del servidor de correo, el resto debe ser bastante claro.

Probablemente necesites consultar los documentos en poplib e imaplib para obtener partes específicas del mensaje, pero espero que esto sea suficiente para que comiences.