Frage

Ich habe mit django E-Mail zu senden Fähigkeiten sehr vertraut geworden, aber ich havn't etwas gesehen darüber Empfang und Verarbeitung von E-Mails von Benutzern. Ist diese Funktionalität zur Verfügung?

Ein paar Google-Suchen nicht sehr viel versprechende Ergebnisse auftauchen. Obwohl ich das tat finden: E-Mails in Python empfangen und senden

Werde ich meine eigene Rolle? wenn ja, werde ich diese App schneller sein Posting als man sagen kann ... was auch immer Sie sagen.

Danke, Jim

Update . Ich versuche nicht, einen E-Mail-Server zu machen, ich muß nur einige Funktionen hinzufügen, in dem Sie ein Bild auf die Website eines E-Mail und haben es in Ihrem Konto Pop-up

War es hilfreich?

Lösung

Es gibt eine App jutda-Helpdesk genannt, die Pythons poplib und imaplib verwendet zu verarbeiten eingehende E-Mails. Sie müssen nur mit POP3 oder IMAP-Zugriff ein Konto irgendwo haben.

Dies ist geeignet, von ihrer 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 ist nur ein Objekt all Mail-Server Informationen zu speichern, sollte der Rest ziemlich klar sein.

Sie werden wahrscheinlich brauchen die Dokumentation auf poplib und imaplib zu überprüfen, bestimmte Teile der Nachricht zu erhalten, aber hoffentlich ist das genug, um Sie in Gang zu bringen.

Andere Tipps

Ich weiß, diese Frage jetzt ziemlich alt, aber nur dachte ich für die Zukunft hinzufügen würde, die Sie vielleicht http://cloudmailin.com a go. Wir haben ziemlich viele django Benutzer das System verwenden und es sollte ein wenig einfacher als die vorgeschlagene Lösung.

Django ist wirklich als Web-Server (auch als Rahmen, die in einen Web-Server paßt) gedacht, nicht als E-Mail-Server. Ich nehme an, Sie einige Codes in eine Django Web-Anwendung setzen könnten, die einen E-Mail-Server startet, die Art von Code in dieser Frage an Dich verknüpfen gezeigt, aber ich würde es wirklich nicht empfehlen; es ist ein Missbrauch der Fähigkeiten von dynamischer Web-Programmierung.

Die normale Praxis ist, separaten E-Mail und Web-Server zu haben, und dafür würden Sie in so etwas wie Sendmail aussehen wollen oder (besser noch) Postfix. Für POP3 würden Sie auch so etwas wie Dovecot oder Courier brauchen, denke ich. (Es ist sicherlich möglich, die E-Mail-Server, um Ihre Web-Anwendung benachrichtigen, wenn E-Mails empfangen werden, so dass es auf sie wirken kann, wenn es das ist, was Sie tun wollen.)

EDIT : als Antwort auf Ihre Kommentare: ja Sie versuchen (oder zumindest Nutzung) einen E-Mail-Server zu machen. Ein E-Mail-Server ist nur ein Programm, das erhält (wie auch, und kann sein senden können sie aber Sie brauchen nicht die) E-Mails.

Sie können auf jeden Fall einen kleinen E-Mail-Server in Python schreiben, dass diese E-Mails nur empfängt und speichert die Bilder auf das Dateisystem oder eine Datenbank oder was auch immer. (Könnte sich lohnen, eine neue Frage stellen, über) Aber es nicht Teil Ihrer Django Web-App machen; halten Sie es als sein eigenes separates Programm.

scroll top