Maildir - 打开最新的电子邮件并回复发件人

时间:2015-02-19 04:35:28

标签: python email maildir

我已使用.forward文件在电子邮件服务器上配置了postfix,该文件保存了电子邮件副本并调用了python脚本。这些电子邮件以Maildir格式存储。

我想使用此python脚本向发件人发送回复,确认已收到该电子邮件。我想知道是否有任何方法可以打开/访问该电子邮件,获取标题信息和发件人地址并发回电子邮件。

我查看了几个python的Maildir函数示例,但它们主要添加/删除电子邮件。如何打开Maildir / new收到的最新电子邮件并获取所需信息?

提前致谢。对这个愚蠢的问题道歉,但我是Python的新手。

编辑:

md =  mailbox.Maildir('/home/abcd/Maildir')
message = md.iterkeys().next()
#print message
#for msg in md:
#    subject = msg.get('Subject',"")
#    print subject
print message
sender = message.get('From',"")
print sender

当我执行此操作时,我确实收到了发件人姓名..但它是最早到达Maildir / new文件夹的电子邮件而不是最新邮件。

另外,如果我使用get_date函数,如果两个(或更多)电子邮件在同一天到达会怎么样?

1 个答案:

答案 0 :(得分:0)

一些提示:

  • 您可以使用mailbox.Maildir类打开Maildir(请参阅邮箱文档)
  • 您可以通过itervalues方法迭代Maildir中的所有邮件
  • 现在你收到了Maildir的所有邮件。其中一个是最近的一个。
  • 邮件是MaildirMessage类的对象,它是Message的子类。对于这些类,还存在文档(当前与邮箱位于同一页面上)
  • 使用方法" get_date"在这些对象上,您可以找到哪一个是最新的对象。你仍然必须自己选择它。

初学者帮助:你也应该自己做一点点。

你应该熟悉Python文档 - 我同意,找到合适的软件包以及如何使用它们并不容易,但你可以直接在Python shell中试用它们。

好的,这是另一个代码片段:

newest = None
for message in md.itervalues():
   if newest == None or message.get_date() > newest.get_date():
      newest = message
# now newest should contain the newest message

没有看到你的上一个问题:get_date不仅包含日期,还包含时间,因为它给出了自1970年(通常)1970年以来的秒数。