当前位置:  开发笔记 > 编程语言 > 正文

将postfix邮件集成到我的(python)webapp中

如何解决《将postfix邮件集成到我的(python)webapp中》经验,为你挑选了2个好方法。

我有一个postfix服务器监听和接收mywebsite.com收到的所有电子邮件现在我想在自定义界面中显示这些postfix电子邮件,对每个用户也是如此

为了清楚起见,mywebsite.com的所有用户都将获得一些邮件地址,例如someguy@mywebsite.com,他们在我的生产机器上收到电子邮件,但他在mywebsite.com的仪表板内置自己的控制台中看到了这些邮件.

因此,为了让用户看到他收到的邮件,我需要创建一个postfix邮件的电子邮件副本,以便mywebsite(在django-python上运行)将很容易地反映它们.我如何实现这一目标.确切地说,这是我的问题,如何将postfix邮件转换为python邮件对象(以便我的系统/网站)理解它?

为了清楚起见,我已经编写了伪代码来实现我想要的:

email_as_python_object = postfix_email_convertor(postfix_email)
attachments_list = email_as_python_object.attachments
body = email_as_python_object.body # be it html or whatever

顺便说一下,我尝试了python附带的默认电子邮件模块,但对于所有情况都不方便.甚至我需要手动处理邮件附件(我讨厌).我只需要一个简单的方法来处理这些案例(我想知道postfix如何理解收到的电子邮件.即..它如何自动计算出不同的标题,附件等...).请帮我.



1> Douglas Leed..:

您希望将postfix传递到本地邮箱,然后使用Webmail系统让人们访问该存储的邮件.

不要挂在postfix上 - 它只是一个转移代理 - 它从一个地方接收消息,并将它们放在其他地方,它不存储消息.因此,postfix将通过SMTP获取邮件,并将它们放在本地邮件文件中.

然后IMAP或某些网络邮件系统会向用户显示这些消息.

如果您希望将邮件集成到您的webapp中,那么您应该运行IMAP服务器,并使用python IMAP库来获取消息.



2> pi...:

首先,Postfix邮件路由规则可能非常复杂,而您可能首选的解决方案在错误的地方需要大量的诡计.你不想不小心向某些用户显示其他邮件,对吗?其次,虽然Postfix几乎可以做任何事情,但它不应该因为它只是一个MDA(邮件传递代理).

使用POP3或IMAP服务器(Cyrus IMAPd,Courier等)可以最好地解决您的解决方案.IMAP服务器可以拥有"超级用户帐户",可以阅读所有用户的邮件.然后,您的Web应用程序可以连接到用户邮箱并检索标题和机身.

如果您只想显示主题行,则可以使用特殊的IMAP命令和非常低的开销来获取它们.虽然Python IMAP库没有最容易理解的API.我将从标准库中取一个例子给它一个镜头(未检查!):

import imaplib

sess = imaplib.IMAP4()
sess.login('superuser', 'password')
# Honor the mailbox syntax of your server!
sess.select('INBOX/Luke') # Or something similar. 
typ, data = sess.search(None, 'ALL') # All Messages.

subjectlines = []
for num in data[0].split():
    typ, msgdata = sess.fetch(num, '(RFC822.SIZE BODY[HEADER.FIELDS (SUBJECT)])')
    subject = msgdata[0][1].lstrip('Subject: ').strip()
    subjectlines.append(subject)

这将登录到IMAP服务器,选择用户邮箱,获取所有消息ID,然后仅提取主题行(希望)并将结果数据附加到主题列表中.

要获取邮件的其他部分,请使用sess.fetch更改该行.对于具体的语法看看RFC 2060(第6.4.5节).

祝好运!

推荐阅读
可爱的天使keven_464
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有