gpt4 book ai didi

Perl:Win32::OLE 和 Microsoft Outlook - 有效地遍历电子邮件附件

转载 作者:行者123 更新时间:2023-12-04 20:16:24 27 4
gpt4 key购买 nike

我是一名实习生,对此很陌生......

我的老板每周一都会收到一封带有两个附件的电子邮件,他必须将其转换为 wiki 代码并将其放在我们的内部网站上。由于要传输的信息量很大,该过程每周一大约需要 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 周内?(我不虽然不喜欢那个))

谢谢。

最佳答案

您导入了 in包中的子程序Win32::OLE .这可能是一些可怕的“语法糖”。并且深深地不朽。我想它会从 Win32::OLE 返回某种列表。对象 $Folder .所以试试这个:

foreach my $msg (reverse $Folder->{items}->in)

或者
foreach my $msg (reverse in($Folder->{items}))

另外,一定要 use strictuse warnings在每个脚本中,以确保高质量的代码。如果您可以确定将使用现代 perl,您还可以 use v5.10并享受 say函数 - 它的行为类似于 print ,但会自动在输出中附加换行符。

关于Perl:Win32::OLE 和 Microsoft Outlook - 有效地遍历电子邮件附件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11654941/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com