문제

Django의 이메일 보내기 능력에 대해 잘 알고 있었지만 사용자로부터 이메일을 받고 처리하는 것에 대해 아무것도 보지 못했습니다. 이 기능을 사용할 수 있습니까?

몇몇 Google 검색은 매우 유망한 결과를 얻지 못했습니다. 나는 이것을 찾았지만 : Python에서 이메일을 받고 보내십시오

내 자신을 굴려야할까요? 그렇다면, 나는 당신이 말할 수있는 것보다 더 빨리 그 앱을 게시 할 것입니다.

고마워요, 짐

업데이트: 저는 이메일 서버를 만들려고하지 않습니다. 이미지를 사이트에 이메일로 이메일로 보내고 계정에 팝업 할 수있는 기능을 추가하면됩니다.

도움이 되었습니까?

해결책

전화 앱이 있습니다 Jutda-Helpdesk 그것은 파이썬을 사용합니다 poplib 그리고 imaplib 들어오는 이메일을 처리합니다. POP3 또는 IMAP 액세스가있는 어딘가에 계정이 있어야합니다.

이것은 그들에게 적합합니다 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 모든 메일 서버 정보를 저장할 수있는 객체 일뿐입니다. 나머지는 매우 명확해야합니다.

문서를 확인해야 할 것입니다 poplib 그리고 imaplib 메시지의 특정 부분을 얻으려면 이렇게하기를 바랍니다.

다른 팁

나는이 질문이 지금 꽤 오래되었다는 것을 알고 있지만, 당신이주고 싶은 미래의 참조를 위해 추가 할 것이라고 생각했습니다. http://cloudmailin.com 전에. 우리는 시스템을 사용하는 Django 사용자가 상당히 많으며 제안 된 솔루션보다 조금 간단해야합니다.

Django는 실제로 웹 서버 (웹 서버에 맞는 프레임 워크)로서 전자 메일 서버가 아닙니다. 링크 한 해당 질문에 표시된 코드의 종류를 사용하여 이메일 서버를 시작하는 Django 웹 응용 프로그램에 일부 코드를 넣을 수 있다고 생각하지만 실제로 권장하지는 않습니다. 동적 웹 프로그래밍 기능의 남용입니다.

일반적인 관행은 별도의 이메일과 웹 서버를 갖는 것이며,이를 위해 Sendmail 또는 (더 나은) Postfix와 같은 것을 조사하고 싶을 것입니다. POP3의 경우 Dovecot 또는 Courier와 같은 것이 필요할 것입니다. (전자 메일 서버에 이메일이 수신되면 웹 응용 프로그램에 알리도록 할 수 있습니다.

편집하다: 귀하의 의견에 대한 응답으로 : 예, 이메일 서버를 만들거나 최소한 사용하려고합니다. 전자 메일 서버는 이메일을받는 프로그램 일뿐입니다 (전자 메일도 보낼 수 있지만 필요하지 않습니다).

이 이메일을 수신하고 이미지를 파일 시스템이나 데이터베이스 등에 저장하는 작은 전자 메일 서버를 파이썬으로 작성할 수 있습니다. (새로운 질문을 할 가치가있을 수 있습니다). 그러나 Django 웹 앱의 일부로 만들지는 않습니다. 고유 한 프로그램으로 유지하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top