首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >以编程方式高效地移动电子邮件

以编程方式高效地移动电子邮件
EN

Stack Overflow用户
提问于 2017-06-21 21:30:31
回答 1查看 169关注 0票数 0

我正在写一个脚本,把我所有读过的电子邮件都移到一个独立的PST存档。一旦它被接受,我将通过一条规则来执行它。

但是,我的当前代码需要很长时间才能完成(大约8分钟),而简单地在Outlook中执行拖放操作则要快得多。

有没有人知道一个更好的方法来移动大量的电子邮件?或者通过访问Outlook的索引?

代码语言:javascript
复制
Add-Type -AssemblyName "Microsoft.Office.Interop.Outlook"

$Outlook=New-Object -ComObject Outlook.Application
$Namespace = $Outlook.GetNameSpace("MAPI")

$Items=1

while ($Items -gt 0)
{
    $Items=0
    $SourceFolder = $Namespace.Folders.Item($SourcePSTName).Folders.Item($Folder)
    $TargetFolder = $Namespace.Folders.Item($TargetPSTName).Folders.Item($Folder)

    $AllOfDem=($SourceFolder.Items | where {$_.SentOn -lt $SentMaxDate -and $_.Unread -eq $False})
    foreach ($Mail in $AllOfDem)
    {
        $Mail.Move($TargetFolder) | Out-Null
        $Items++
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-21 21:50:59

我怀疑您的问题不在于移动消息(可以使用扩展的MAPI或Redemption (我是它的作者)来优化消息以在单个调用中移动所有消息),而是在一个文件夹中循环遍历所有的项--这是一个很大的问题。

使用Items.Find/FindNextItems.Restrict来提供只返回匹配项的查询,而不是循环。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44686591

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档