Django的发送和接收电子邮件?
-
06-09-2019 - |
题
我已经得到了相当熟悉Django的电子邮件发送的能力,但我没有带看到它从用户接收和处理电子邮件什么。这是功能是否可用?
一些谷歌搜索还没有翻起来非常可喜的成果。虽然我没有找到这个:接收和发送的蟒蛇电子邮件
我是不是将不得不推出自己的?如果是的话,我将发布该应用程序的速度比你说......你说什么。
感谢, 吉姆
更新:我没有试图让电子邮件服务器,我只需要添加一些功能,你可以将照片用电子邮件发送到网站,并在您的帐户弹出
解决方案
有一个称为 jutda-服务台使用Python的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是真的打算作为Web服务器(当然,如装配到web服务器的框架),而不是作为电子邮件服务器。我想你可以把一些代码到启动电子邮件服务器,使用那种在你链接到该问题的代码所示Django的web应用程序,但我真的不会推荐它;它是动态网页编程的能力的滥用。
在通常的做法是有单独的电子邮件和Web服务器,以及您想寻找到类似的Sendmail或(更好的)后缀。对于POP3,您还需要像达夫科特或快递公司,我想。 (这当然可能有收到邮件时,邮件服务器通知你的web应用程序,这样就可以对其采取行动,如果这是你想要做什么。)
修改的:响应您的意见:是的,你正试图使(或至少使用)的电子邮件服务器。电子邮件服务器只是接收邮件程序(也可以是能够发送它们为好,但你并不需要一个)。
您绝对可以用Python语言编写一个小的邮件服务器,只是接收这些电子邮件和图像保存到文件系统或数据库或什么的。 (可能是值得一问了一个新问题,有关),但不要让你的Django Web应用程序的一部分;保持它作为它自己的单独的程序。