Pregunta

He conseguido bastante familiarizado con las capacidades de correo electrónico Envío de Django, pero no te has visto nada al respecto y recibir correos electrónicos de procesamiento de los usuarios. Está disponible esta funcionalidad?

Algunas búsquedas de Google no han aparecido resultados muy prometedores. Aunque me encontré esto: Recibir y enviar mensajes de correo electrónico en pitón

¿Voy a tener que rodar mi propia? si es así, voy a publicar esa aplicación más rápido que se puede decir ... lo que usted dice.

gracias, Jim

actualización . No estoy tratando de hacer un servidor de correo electrónico, sólo hay que añadir alguna funcionalidad donde se puede enviar por correo electrónico una imagen para el sitio y tienen el pop-up en su cuenta

¿Fue útil?

Solución

Hay una aplicación llamada jutda-asistencia que utiliza poplib y imaplib de Python para procesar mensajes de correo electrónico entrantes. Usted sólo tiene que tener una cuenta en algún lugar con POP3 o IMAP.

Esta es una adaptación de su 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 sólo un objeto para almacenar toda la información del servidor de correo, el resto debe ser bastante claro.

Usted va a necesitar para comprobar la documentación sobre poplib y imaplib para obtener partes específicas del mensaje, pero espero que esto es suficiente para que te va.

Otros consejos

Sé que esta pregunta es bastante viejo ahora, pero sólo pensé que me gustaría añadir para futuras referencias que se quieren dar http://cloudmailin.com una oportunidad. Tenemos un buen número de usuarios de Django usando el sistema y debe ser un poco más simple que la solución propuesta.

Django realmente está pensado como un servidor web (así, como un marco que encaja en un servidor web), no como un servidor de correo electrónico. Supongo que se podría poner un poco de código en una aplicación web Django que se pone en marcha un servidor de correo electrónico, utilizando el tipo de código que se muestra en esta pregunta se ha vinculado a, pero realmente no lo recomendaría; es un abuso de las capacidades de programación web dinámica.

La práctica normal es tener los servidores de correo electrónico y de Internet por separado, y para eso se tendría que desee ver en algo así como Sendmail o (mejor aún) Postfix. Para POP3 también tendría algo así como el palomar o Courier, creo. (Es ciertamente posible que el servidor de correo electrónico notificar a su aplicación web cuando se reciben mensajes de correo electrónico para que pueda actuar sobre ellos, si eso es lo que quiere hacer.)

editar : en respuesta a sus comentarios: si usted está tratando de hacer (o al menos su uso) de un servidor de correo electrónico. Un servidor de correo electrónico es simplemente un programa que recibe mensajes de correo electrónico (y puede ser capaz de enviar ellos también, pero no es necesario que).

Sin duda se puede escribir un pequeño servidor de correo electrónico en Python que simplemente recibe estos mensajes de correo electrónico y guarda las imágenes en el sistema de archivos o una base de datos o lo que sea. (Podría valer la pena pedir una nueva pregunta, acerca) Pero no hacerlo parte de su aplicación web Django; mantenerlo como su propio programa separado.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top