【发布时间】:2015-05-09 11:53:06
【问题描述】:
我收到了 4GB 的电子邮件连接到一个文件中,并建议 MIME::Parser 可以将单个电子邮件再次拆分出来。我所有的约会尝试都以解析器仅复制原始文件而不提取任何电子邮件而告终。那么:这甚至是 MIME::Parser 可以处理的事情吗?我的代码非常基础:
my $file = IO::File->new("somefile", O_RDONLY);
my $parser = new MIME::Parser;
$parser->output_dir("somedir");
my $entity = $parser->parse($file);
$file->close;
以下是一些人要求的示例日期的链接。 这是所有垃圾邮件和网络钓鱼电子邮件。不要点击任何链接。享受:Pastbin of 4KB of emails.
【问题讨论】:
-
显示您的一些文件?可能是第一条和第二条消息的前几行和最后几行?
-
这是一次性的吗?如果是这样,您最好手动完成。如果不是,是什么软件把它变成这种格式的?
-
手工是不可行的。源文件大小为 4GB,因此我预计大约有 300,000 多封电子邮件。
-
查看提供的数据,这根本不是任何格式,它只是串联在一起的电子邮件 - 这意味着没有可靠的方法将它们再次分开。您将能够做的最好的事情是寻找 Received: 尽可能严格的模式(这会弄乱任何包含该模式作为内容的一部分的电子邮件,并留下任何可能在收到之前作为一部分的标题上一条消息)
-
@ysth:昨晚我确实参加了“收到:来自”的拆分。它在一定程度上起作用,但最终会停止。我会尝试改进正则表达式,看看是否有帮助。我很犹豫是否要继续窃听数据的来源,因为他们正在从工作日抽出时间来提供数据。但这可能是唯一的解决方案。