在 Perl 中读取和文本匹配 Outlook .msg 文件

Reading and text matching Outlook .msg file in Perl

我在使用 Perl 匹配 .msg 文件时遇到问题。第一个代码块用于打印整个消息,但如果它包含特定字符串,我只需要文件名。

    use warnings;
    use strict;
    use Email::Outlook::Message;
    use Email::MIME;

    my $sourceDir = "c:/temp";

    open_msg("test.msg");

    sub open_msg {
       my $verbose = 0;
       my $msgFile = shift;
       my $origMsg = new Email::Outlook::Message "$sourceDir/$msgFile", $verbose or die "$!";
       my $mime = $origMsg->to_email_mime;
       print $mime->as_string;
       return ($origMsg);
    }

.msg 文件位于一个文件夹中(在 Windows 上)。我使用下面的代码来打印 .txt 文件的文件名,但我需要对 .msg 文件使用类似的东西。

#works for .txt files
my @files = glob "C:/temp";

foreach my $file (@files) {
open   (FILE, "$file");
while(my $line= <FILE> ){
    print "$file" if $line =~ /test_string/;
}
close FILE; 
} 

谢谢!

我手边没有任何 .msg 文件可以用来测试,但如何替换此行:

print $mime->as_string;

...用这样的语句?

print $mime->as_string if $mime->as_string =~ /test_string/;

就 "print its contents if it contains test_string" 而言,这应该可以解决问题。

如果您还想遍历整个 *.msg 文件列表,请尝试这样的操作:

my @files = glob "C:/temp";

foreach my $file (@files) {
    open_msg($file);
}