Question

J'ai eu assez familier avec les capacités d'envoi e-mail de django, mais je havn't vu quoi que ce soit à ce sujet et recevoir des e-mails de traitement des utilisateurs. Cette fonctionnalité est-elle disponible?

Quelques recherches de Google ne sont pas retroussé des résultats très prometteurs. Bien que j'ai trouvé ceci: Recevoir et envoyer des e-mails en python

Est-ce que je vais devoir rouler ma propre? si oui, je vais poster cette application plus rapide que vous pouvez dire ... tout ce que vous dites.

merci, Jim

mise à jour :. Je ne cherche pas à faire un serveur de messagerie, j'ai juste besoin d'ajouter des fonctionnalités où vous pouvez envoyer une image sur le site et avoir pop dans votre compte

Était-ce utile?

La solution

Il y a une application appelée jutda-assistance qui utilise le poplib de Python et imaplib pour traiter e-mails entrants. Il vous suffit d'avoir un compte quelque part avec POP3 ou IMAP accès.

est une adaptation de leur 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 est juste un objet pour stocker toutes les informations du serveur de messagerie, le reste devrait être assez clair.

Vous aurez probablement besoin de vérifier les documents sur poplib et imaplib pour obtenir des parties spécifiques du message, mais nous espérons que cela est suffisant pour vous permettre de continuer.

Autres conseils

Je sais que cette question est assez vieux maintenant, mais juste pensé que je rajouterais pour référence que vous pourriez vouloir donner http://cloudmailin.com un aller. Nous avons un bon nombre des utilisateurs de django utilisent le système et il devrait être un peu plus simple que la solution proposée.

Django est vraiment conçu comme un serveur web (bien, comme un cadre qui correspond à un serveur Web), non pas comme un serveur de messagerie. Je suppose que vous pouvez mettre un peu de code dans une application web Django qui démarre un serveur de messagerie, en utilisant le type de code indiqué dans cette question vous avez lié, mais je ne le recommanderais pas vraiment; c'est un abus des capacités de programmation web dynamique.

La pratique normale est d'avoir des serveurs Web et de messagerie séparés, et que vous voulez regarder dans quelque chose comme Sendmail ou (mieux encore) Postfix. Pour POP3 vous aussi besoin de quelque chose comme Dovecot ou Courier, je pense. (Il est certainement possible d'avoir le serveur de messagerie informez votre application Web lorsque les courriels sont reçus afin qu'il puisse agir sur eux, si c'est ce que vous voulez faire.)

EDIT : en réponse à vos commentaires: oui, vous essayez de faire (ou au moins l'utilisation) d'un serveur de messagerie. Un serveur de messagerie est juste un programme qui reçoit des e-mails (et peut être en mesure de les envoyer aussi bien, mais vous n'avez pas besoin que).

Vous pouvez certainement écrire un petit serveur de messagerie en Python qui reçoit juste ces e-mails et enregistre les images au système de fichiers ou une base de données ou autre chose. (Peut-être la peine de demander une nouvelle question, à propos), mais ne font pas partie de votre application web Django; le garder comme son propre programme distinct.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top