【问题标题】:How do I remove email headers?如何删除电子邮件标头?
【发布时间】:2010-12-08 21:59:58
【问题描述】:

我学习 Perl 并为我的家人做了一个自制项目(订阅项目)。使用 Net::POP3 的 Perl 应用程序连接到我的邮箱并将我所有的电子邮件保存到一个文件 (Mail.txt)。当我打开这个文件时,我看到很多垃圾,如下所示。我能做些什么来删除这个?谢谢。

返回路径: 收到:来自 embro.tpn.terra.com (LMTP) 的 [unix socket]; 2009 年 10 月 11 日星期日 04:09:50 +0000 (UTC) X-蕉麻垃圾邮件:153 X-Terra-Karma:-2% X-Terra 哈希:2c7d32f717e807b11af5c0871edb9e93 Received-SPF: pass (embro.tpn.terra.com: domain of linuxquestions.org 指定 208.101.3.244 作为允许的发件人)client-ip=208.101.3.244; 信封来自=forum@linuxquestions.org; helo=sql02.linuxquestions.org; 收到:来自 sql02.linuxquestions.org (smtp.linuxquestions.org [208.101.3.244]) 通过 embro.tpn.terra.com (Postfix) 与 ESMTP id 14EA1580000A2 为了 ; 2009 年 10 月 11 日星期日 04:09:49 +0000 (UTC) 收到:来自 web02.linuxquestions.org (web02-be.linuxquestions.org [10.13.156.4]) 通过 sql02.linuxquestions.org (8.13.8/8.13.8) 与 ESMTP id n9B49mXe005694 为了 ; 2009 年 10 月 11 日星期日 00:09:48 -0400 域密钥签名:a=rsa-sha1; s=smtp; d=linuxquestions.org; c=简单; q=dns; b=Le/RccpkHMfH426hLwlLkIbCujr0LiWKM32ryuZ1fWwYU6VjCTocd30N/JAg+w77d 54VJkNnpA18iQxJ/yfKyQ== 收到:来自 web02.linuxquestions.org (localhost.localdomain [127.0.0.1]) 通过 web02.linuxquestions.org (8.13.8/8.13.8) 与 ESMTP id n9B49m2f027957 为了 ; 2009 年 10 月 11 日星期日 00:09:48 -0400 收到:(来自nobody@localhost) 通过 web02.linuxquestions.org (8.13.8/8.13.8/Submit) id n9B49mNn027956; 2009 年 10 月 11 日星期日 00:09:48 -0400 日期:2009 年 10 月 11 日星期日 00:09:48 -0400 至:nathanpc@terra.com.br 主题:“您希望将哪些程序移植到 Linux 上?”更新 来自:“LinuxQuestions.org” 自动提交:自动生成 消息 ID: X 优先级:3 X-Mailer: LQ 邮件程序 内容类型:文本/纯文本;字符集="ISO-8859-1" 内容传输编码:8bit MIME 版本:1.0 状态:O 亲爱的 nathanpc,

【问题讨论】:

    标签: perl email


    【解决方案1】:

    这不是垃圾。它是电子邮件标题。例如,使用 Mail::Message 来解析它。像这样的:

    my $msg_obj = Mail::Message->read($rawdata); my $body = $msg_obj->body;
    

    【讨论】:

    • 现在的孩子们,被隐藏所有标题的图形电子邮件查看器宠坏了...... :)
    【解决方案2】:

    你知道,我确实推荐了Mail::POP3Client,它抽象了细节:

    Body( MESSAGE_NUMBER )

    根据上下文获取指定消息的正文,可以是行数组还是字符串。

    BodyToFile( FILE_HANDLE, MESSAGE_NUMBER )

    获取指定消息的正文并将其写入给定的文件句柄。

    【讨论】:

    • 他说他正在学习,也许出于教学原因,他想努力学习。就像使用导数的定义来计算多项式函数的导数一样。捷径要容易得多,但学习应用底层方法也很有价值。 web.mit.edu/wwmath/calculus/differentiation/polynomials.html
    • @daotoad:首先,我知道如何求导。其次,如果要在此处应用相同的逻辑,则应从阅读适用的 RFC 开始,并且会知道电子邮件标头是什么。而且,使用Mail::Message 解析消息(参见接受的答案)与我原则上推荐的有何不同?
    【解决方案3】:

    电子邮件标题包含直到第一个完全空白行的所有文本。所以,如果你真的想扔掉它们(而不是像前面的例子建议的那样使用一个好的模块来解析它们),只需扔掉包括第一个空行在内的所有内容。

    如果您正在查看包含多封邮件的 mbox 格式邮箱文件,您可以通过查找以五个字符“From”开头的行来识别下一封邮件标题的开头(注意尾随空格 - 这是它与“From:”标头的区别)。

    【讨论】:

    猜你喜欢
    • 2011-09-05
    • 1970-01-01
    • 1970-01-01
    • 2014-08-23
    • 1970-01-01
    • 2020-11-23
    • 2018-03-16
    • 2019-12-23
    • 1970-01-01
    相关资源
    最近更新 更多