我有一个与电子邮件主题行的一部分匹配的脚本,然后将电子邮件正文打印到输出文件以进行排序等,然后将电子邮件移动到子文件夹。 我想要做的是获取主题行的最后一个单词(这是一个名称),并理想地将该单词添加到电子邮件正文的每一行的末尾,这是我目前所拥有的,它成功打印了该电子邮件身体输出并移动它们。
<code>
#!/usr/bin/perl
use strict;
use warnings;
#use diagnostics;
use Win32::OLE;
use Win32::OLE::Const 'Microsoft Outlook';
my $filename = 'c:\\test.txt';
open( my $output_fh, ">", $filename ) or die $!;
my $outlook = Win32::OLE->new('Outlook.Application')
or die "Failed Opening Outlook.";
my $namespace = $outlook->GetNamespace("MAPI");
my $folder = $namespace->Folders("inbox");
my $tofolder = $namespace->Folders("archive");
my $items = $folder->Items;
foreach my $msg ( $items->in ) {
if ( $msg->{Subject} =~ m/^test test test / ) {
my @name = split(/ /, $msg);
print $name[-1] . "\n";
print {$output_fh} $msg->{Body};
$msg->Move($tofolder );
}
}
close($output_fh);
<code>
此警告显示为“Win32 :: OLE = HASH(0x2a9432c)”
<code>
the Email subject lines will be
test test test micky
test test test jony
test test test dave
test test test adam
so i would like the name added to each line of the email body
<code>
答案 0 :(得分:1)
你的分裂似乎是错误的。
my @name = split(/ /, $msg);
应该不是
my @name = split(/ /, $msg->{Subject});
另外,我很想在第一个主题测试中进行捕获:
if ( $msg->{Subject} =~ m/^test test test (.*)/ ) {
my $name = $1;
print "$name\n";
另请注意,我没有使用。操作符 - 通常认为在双引号字符串中使用扩展更为甜蜜。