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

时间:2019-10-25 20:52:22

标签: perl outlook msg

我在使用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; 
} 

谢谢!

1 个答案:

答案 0 :(得分:1)

我没有任何便于测试的.msg文件,但是如何替换此行:

print $mime->as_string;

...带有这样的声明?

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

就“打印包含test_string的内容”而言,这应该可以解决问题。

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

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

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