Python 解决方案允许通过电子邮件将照片上传到我的 Django 网站

标签 python django email cron postfix-mta

我正在学习Python/Django,我的宠物项目是一个照片共享网站。我想让用户能够使用 Posterous、Tumblr 等电子邮件地址上传照片。研究使我相信我需要使用以下内容:

-- 计划任务 -- python 邮件解析器 -- cURL 或 libcurl -- 更新我的数据库的东西

所有这些部分如何协同工作仍然是我需要澄清的地方。我知道 cron 将运行一个解析电子邮件的脚本(阅读时听起来很简单),但如何开始处理所有这些事情是令人畏惧的。任何为我指明正确方向、教程或答案的帮助将不胜感激。

最佳答案

从 maildir 读取消息。它尚未优化,但展示了如何解析电子邮件。当然,您应该将有关文件和用户的信息存储到数据库中。将模型导入到此代码中并进行正确的插入。

import mailbox
import sys
import email
import os
import errno
import mimetypes


mdir = mailbox.Maildir(sys.argv [1], email.message_from_file)


for mdir_msg in mdir:
    counter = 1
    msg = email.message_from_string(str(mdir_msg))
    for part in msg.walk():
        # multipart/* are just containers
        if part.get_content_maintype() == 'multipart':
            continue
        # Applications should really sanitize the given filename so that an
        # email message can't be used to overwrite important files
        filename = part.get_filename()
        if not filename:
            ext = mimetypes.guess_extension(part.get_content_type())
            if not ext:
                # Use a generic bag-of-bits extension
                ext = '.bin'
            filename = 'part-%03d%s' % (counter, ext)
        counter += 1
        fp = open(os.path.join('kupa', filename), 'wb')
        fp.write(part.get_payload(decode=True))
        fp.close()
        #photomodel imported from yourapp.models
        photo = PhotoModel()
        photo.name = os.path.join('kupa', filename)
        photo.email = ....
        photo.save()

关于Python 解决方案允许通过电子邮件将照片上传到我的 Django 网站,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3923915/

相关文章:

python - 测试 Python 装饰器?

django - 为什么 d3 总是附加到正文而不是我的选择?

delphi - 使用 Indy 发送电子邮件不会在 Outlook 中显示附件

ruby - 为什么会出现 Net::SMTPSyntaxError?

python - 窗体的干净方法没有被调用

c# - 使用 SmtpClient 时如何保存电子邮件而不是发送电子邮件?

Python - 如何使用管道执行 shell 命令,但没有 'shell=True' ?

python - 尝试使用 Keras 实现堆叠 LSTM 层时出现问题

python - 摘要行或数据框

python - 在 python 中,组合 3 个字典并按其中一个字典键排序的最有效方法是什么?