【问题标题】:Grab headers (just headers) from mail message in Perl从Perl中的邮件消息抓住标题(只需标题)
【发布时间】:2013-07-09 15:49:45
【问题描述】:

我想在 Perl 中提取邮件的标题。我不需要身体,所以我不想花时间解析它们。

Email::Simple::Header 看起来很有用,但典型的实例化涉及解析整个电子邮件(包括正文)。所以我正在考虑像这样啜饮标题

local $/ = "\n\n";
my $head = <>;
my $parsed = Email::Simple::Header->new($head);

这是最有效的方法吗?

【问题讨论】:

    标签: perl parsing email


    【解决方案1】:

    我不确定这是否会为您节省任何时间。 Email::Simple 不会解析电子邮件的正文。它查看正文的唯一时间是通过调用Email::Simple::_split_head_from_body() 将其与标题分开。这与您对$/ = "\n\n" 所做的事情几乎相同,但可以更好地处理不同类型的换行符。

    除非您有分析证据表明您的程序在不必要的电子邮件正文解析上花费了大量时间(不管它会在那里解析什么),否则请避免过早优化并正常使用 Email::Simple 模块。

    【讨论】:

    • Donig 以这种方式慢 33%,在一个包含 1,500 封大小不一的邮件的邮箱上进行了测试。有道理——如果你不需要,为什么要读取所有数据。不过,请注意换行...
    【解决方案2】:

    长度为零的行将标头与消息的其余部分分开。您的 perl 脚本可以简单地读取传入消息直到第一个零长度行,这就是标题。

    【讨论】:

    • 是的,这基本上就是我的脚本通过设置$/="\n\n" 所做的事情。此外,可以将其设置为"",它将匹配任意数量的连续空白行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-21
    • 2021-02-06
    • 2022-11-19
    • 2013-11-16
    • 2011-07-07
    • 1970-01-01
    • 2013-02-21
    相关资源
    最近更新 更多