django发送和接收电子邮件?

Jia*_*aro 22 python email django pop3 django-email

我对django的电子邮件发送能力非常熟悉,但我从未见过有关它接收和处理来自用户的电子邮件的任何信息.这个功能可用吗?

一些谷歌搜索没有出现非常有希望的结果.虽然我找到了这个:在python中接收和发送电子邮件

我是否必须自己动手?如果是这样,我会比你说的更快地发布那个应用程序......不管你说什么.

谢谢,吉姆

更新:我不是要创建一个电子邮件服务器,我只需要添加一些功能,您可以将图像通过电子邮件发送到网站并将其弹出到您的帐户中.

tgh*_*ghw 19

有一个名为jutda-helpdesk的应用程序,它使用Python poplibimaplib处理传入的电子邮件.您只需拥有一个具有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()
Run Code Online (Sandbox Code Playgroud)

mb 只是存储所有邮件服务器信息的一些对象,其余的应该非常清楚.

您可能需要检查文档poplibimaplib获取消息的特定部分,但希望这足以让您前进.


Ste*_*ith 5

我知道这个问题现在已经很老了,但我想我将添加以供将来参考,你可能想给http://cloudmailin.com一个去.我们有相当多的django用户使用该系统,它应该比建议的解决方案稍微简单一些.