【问题标题】:Maildir - open latest email and reply to senderMaildir - 打开最新的电子邮件并回复发件人
【发布时间】:2015-04-20 08:12:59
【问题描述】:

我已经在电子邮件服务器上使用 .forward 文件配置了后缀,该文件保存电子邮件副本并调用 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 函数,如果两封(或更多)电子邮件在同一天到达怎么办?

【问题讨论】:

  • 当你在我的回答中写下评论时,我更有可能看到你的评论!
  • 我的错。我以为我在你的帖子下写了。关于这种方法有什么建议吗? :)

标签: python email maildir


【解决方案1】:

一些提示:

  • 您可以使用mailbox.Maildir 类打开Maildir(请参阅邮箱文档)
  • 您可以通过 itervalues 方法遍历 Maildir 中的所有邮件
  • 现在您可以获取 Maildir 中的所有邮件。其中之一是最新的。
  • 邮件是MaildirMessage 类的对象,MaildirMessage 是Message 的子类。对于这些类,还存在一个文档(目前与邮箱在同一页面上)
  • 对这些对象使用“get_date”方法,您可以找出哪一个是最新的。您仍然需要自己选择它。

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

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

好的,这里还有一个代码sn-p:

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 年以来的秒数。

【讨论】:

  • 谢谢!它在一定程度上有所帮助。虽然 get_date 对我不起作用,但我使用 time.mktime() 来实现您的逻辑并且它起作用了。
猜你喜欢
  • 2013-06-29
  • 1970-01-01
  • 1970-01-01
  • 2015-07-02
  • 1970-01-01
  • 2015-10-09
  • 1970-01-01
  • 2018-08-23
  • 1970-01-01
相关资源
最近更新 更多