Pergunta

Eu comecei bastante familiarizado com e-mail habilidades envio do Django, mas eu havn't visto qualquer coisa sobre ele recepção e processamento de e-mails de usuários. Essa funcionalidade está disponível?

Algumas pesquisas do Google não apareceram resultados muito promissores. Apesar de eu encontrar este: Receber e enviar e-mails em python

Am I vai ter que rolar minha própria? Se assim for, eu estarei postando esse aplicativo mais rápido do que você pode dizer ... o que você diz.

graças, Jim

update :. Eu não estou tentando fazer um servidor de e-mail, eu só precisa adicionar algumas funcionalidades, onde você pode enviar uma imagem para o local e tê-lo aparecer em sua conta

Foi útil?

Solução

Há um app chamado jutda-helpdesk que usa poplib e imaplib do Python para processo e-mails recebidos. Você apenas tem que ter um lugar conta com acesso POP3 ou IMAP.

Esta é uma adaptação do seu 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 é apenas algum objeto para armazenar todas as informações do servidor de correio, o resto deve ser bastante clara.

Você provavelmente precisará verificar os docs sobre poplib e imaplib para obter partes específicas da mensagem, mas espero que isto é suficiente para você ir.

Outras dicas

Eu sei que esta questão é muito velho agora, mas apenas pensei que eu gostaria de acrescentar para referência futura que você pode querer dar http://cloudmailin.com uma vez. Temos muito poucos usuários Django usando o sistema e deve ser um pouco mais simples do que a solução proposta.

Django é realmente pretende ser um servidor web (bem, como um quadro que se encaixa em um servidor web), e não como um servidor de e-mail. Eu suponho que você poderia colocar algum código em uma aplicação web Django que inicia um servidor de e-mail, usando o tipo de código mostrado na a essa pergunta é ligada ao, mas eu realmente não recomendo; é um abuso das capacidades de programação web dinâmico.

A prática normal é ter servidores de e-mail e web separadas, e por que você iria querer olhar para algo como Sendmail ou (ainda melhor) Postfix. Para o POP3, você também precisa de algo como Dovecot ou Courier, eu acho. (É certamente possível para que o servidor de e-mail notificar seu aplicativo web quando e-mails são recebidos para que ele possa agir sobre eles, se é isso que você quer fazer.)

Editar : em resposta a seus comentários: Sim, você está tentando fazer (ou pelo menos de uso) um servidor de e-mail. Um servidor de e-mail é apenas um programa que recebe e-mails (e pode ser capaz de enviá-los tão bem, mas você não precisa disso).

Você poderia definitivamente escrever um servidor de e-mail pequena em Python que só recebe esses e-mails e salva as imagens para o sistema de arquivos ou um banco de dados ou qualquer outra coisa. (Talvez valesse a pena fazer uma nova pergunta, sobre) Mas não torná-lo parte do seu aplicativo web Django; mantê-lo como seu próprio programa separado.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top