Maildir打开最新电子邮件并回复发送

2024-05-23 16:21:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我用.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函数,如果两封(或更多)电子邮件在同一天到达呢?在


Tags: 文件函数脚本信息messagenewget电子邮件
1条回答
网友
1楼 · 发布于 2024-05-23 16:21:22

这方面的一些提示:

  • 您可以使用邮箱.Maildir类(请参阅邮箱文档)
  • 您可以通过itervalues方法迭代Maildir中的所有邮件
  • 现在你可以在Maildir中得到所有的邮件。其中一个是最近的一个。在
  • 邮件是MaildirMessage类的对象,它是Message的子类。对于这些类,还存在一个文档(当前与邮箱在同一页上)
  • 通过对这些对象使用“get_date”方法,您可以找出哪个是最近的一个。你还是得自己选。在

只要初学者能帮上忙:你也应该自己做一点。在

您应该熟悉Python文档—我同意,找到正确的包以及如何使用它们并不容易,但是您可以直接在pythonshell中尝试它们。在

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

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年(通常)以来的秒数。在

相关问题 更多 >