【问题标题】:Pipe email from procmail to python script that parses body and saves as text file将电子邮件从 procmail 传送到解析正文并保存为文本文件的 python 脚本
【发布时间】:2013-02-03 19:31:23
【问题描述】:

我正在构建一个数据记录器,并且我花了很多时间试图做到这一点,每个论坛都将我引向不同的方向,我认为一个周末的谷歌搜索保证在这里提交问题。

我正在运行 Ubuntu 12.10,我使用 fetchmail 来获取我的邮件,它将它发送到 procmail,并且我让 procmail 将它传送到一个应该解析正文的 python 脚本,并将它保存到一个文本文件中。问题是我不知道如何编写一个可以执行此操作的 python 脚本,我在网上找到的每个示例都让我有点头晕目眩,我希望有人能花点时间帮助我了解如何实现这一点.

【问题讨论】:

    标签: python parsing procmail


    【解决方案1】:

    在 .promailrc 中,使用以下方法将所有电子邮件通过管道传输到 python 脚本中:

    :0Wc:
    | /usr/bin/python [PATH TO PYTHON SCRIPT]
    

    在 python 脚本中,您可以使用以下方式接收传入的电子邮件:

    import sys
    import email
    
    full_msg = sys.stdin.readlines()
    
    msg = email.message_from_string(full_msg.join());
    
    to = msg['to']
    from = msg['from']
    subject = msg['subject']
    body = msg['body']
    

    【讨论】:

    • 感谢您的回复。我开始备份这个项目,并且能够像这样解析主体:
    • Python 3:msg = email.message_from_string(''.join(full_msg))
    • full_msg 是一个列表,没有连接功能。我正在使用python 2.7。但是@schroeder 方法有效。我的问题是,即使电子邮件正文存在,正文也没有出现。
    • 为了将来参考,msg['body'] 似乎没有返回任何东西,你会想要msg.get_payload()
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-01
    • 2015-07-21
    • 1970-01-01
    • 2013-11-03
    • 2012-04-06
    • 1970-01-01
    • 2014-07-09
    相关资源
    最近更新 更多