python - django 发送和接收电子邮件?

标签 python django email pop3 django-email

我已经非常熟悉 django 的电子邮件发送功能,但我还没有看到任何关于它接收和处理来自用户的电子邮件的信息。这个功能可用吗?

一些谷歌搜索没有出现非常有希望的结果。虽然我确实找到了这个:Receive and send emails in python

我必须自己动手吗?如果是这样,我会以比你说得更快的速度发布该应用程序...随便你说什么。

谢谢, 吉姆

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

最佳答案

有一个应用叫做 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()

mb只是一个存储所有邮件服务器信息的对象,其余的应该很清楚。

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

关于python - django 发送和接收电子邮件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/730573/

相关文章:

python - 我们可以在绘制 Python 图中的 x 轴后对其进行排序吗?

python - 在 int 中查找 double

python - 处理一个巨大的文件(9.1GB)并更快地处理它——Python

javascript - 添加新消息时如何自动向下滚动

确认后未执行 Django 管理操作

python - numpy 中多维数组的向量和

python - Django 管理列表每月过滤日期

laravel - 覆盖电子邮件模板 Laravel 5.3 中的密码重置 url

iphone - 为什么 MFMailComposeViewController 不发送消息?

java - 如何从java通过outlook发送电子邮件