我是一个实习生,对此很新…
我的老板每周一收到一封带有两个附件的电子邮件,他必须将其变成维基代码并将其放在我们的内部网站上.由于要转移的信息量,该过程每周一大约需要20分钟.我被要求简化这个过程.
我有代码将解析文件并将其分解为组件,我有代码从他的收件箱中获取所有附件.
我面临的问题是我的脚本从最早的电子邮件开始.这不是一个大问题,但它导致脚本运行的时间比需要的长得多.
#!/usr/bin/perl use Cwd; use Win32::OLE qw(in with); use Win32::OLE::Const 'Microsoft Outlook'; use Win32::OLE::Variant; my $OL = Win32::OLE->GetActiveObject('outlook.application') || Win32::OLE->new('outlook.application','Quit'); my $NameSpace = $OL->GetNameSpace("MAPI"); my $Folder = $NameSpace->GetDefaultFolder(olFolderInBox); my $dir = cwd . "\\"; $dir =~ s/\//\\/g; my $atch1,$file1,$atch2,$file2; print ref($Folder->{Items}) . "\n"; foreach my $msg (in $Folder->{Items}){ #print $msg->{CreationTime} . "\n"; foreach my $atch (in $msg->{Attachments}){ if($atch->{FileName} =~ m/.xls$/i){ if($atch->{FileName} =~ /Name of attachment1/i){ $atch1 = $atch; $file1 = $dir . "file1.xls"; } if($atch->{FileName} =~ /Name of attachment2/i){ $atch2 = $atch; $file2 = $dir . "file2.xls"; } } } } if($atch1 && $atch2){ print $file1 . "\n" . $file2 . "\n"; $atch1->SaveAsFile($file1); $atch2->SaveAsFile($file2); }
现在设置它的方式,因为它是最新的,最新的,旨在找到文件,然后只要找到更新的文件(虽然我删除了该功能).实际上我可以找到最新的并停止.
我不知道如何撤销$Folder-> {Items}.我甚至不明白它是什么.当我做ref($Folder-> {Items}它说它是一个Win32 :: OLE,这对我没有多大帮助,因为Win32 :: OLE的文档似乎只是表明它可以是任何数量的东西.
我有什么想法可以先获得更新的电子邮件吗? (撤消$Folder-> {Items}?Foreach以外的其他东西?将$folder-> {Items}转储到另一个可以撤销的对象中?只需跳过数千封电子邮件,直到日期在过去2周内?(I虽然不喜欢那个))
谢谢.
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。