使用 Powershell 从第二个电子邮件帐户保存收件箱中的电子邮件附件

Use Powershell to Save Email Attachments from Inbox from a Second Email Account

提问人:Mr. Majestyk 提问时间:11/16/2023 更新时间:11/16/2023 访问量:27

问:

我编写了一个脚本,该脚本将循环浏览我的 Outlook 收件箱并保存我每天收到的特定文件附件。

我有两个用于 Outlook 的电子邮件地址。示例:[email protected] 和 [email protected]

我遇到的问题是我的脚本只会从我的第一个(默认)电子邮件帐户([email protected])的收件箱中浏览并保存附件,但我需要该脚本来保存属于([email protected])的其他收件箱中的附件。

我是 PowerShell 的新手,我无法在线找到解决方案。我正在使用 PowerShell 5.1,以下是我的脚本。

$td = Get-Date -Format "yyyy-MM-dd"

$AttachFile = "File Name.xlsx"
$FileSavePath = "C:\Temp\Attached_File_" + $td + ".xlsx"

$outlook = new-object -com outlook.application

$mapi = $outlook.GetNamespace("MAPI")
$inbox = $mapi.GetDefaultFolder(6)

$emails = $inbox.Items

foreach ($email in $emails) {
    if ($email.ReceivedTime.ToString("yyyy-MM-dd") = $td) {
    
    $email.Attachments | Where-Object {$_.FileName -eq $AttachFile} | foreach {
        $_.SaveAsFile($FileSavePath)
    }}
}
Powershell Outlook 电子邮件附件

评论


答:

1赞 Dmitry Streblechenko 11/16/2023 #1

不要使用 (仅返回默认存储中的文件夹),而是使用 collection,找到所需的存储 (?),然后使用 .Namespace.GetDefaultFolderNamespace.Storesmapi.Stores.Item("[email protected]")Store.GetDefaultFolder

此外,不要遍历文件夹中的所有项目 - 使用或与类似Items.RestrictItems.Find/FindNext"([ReceivedTime] < '11-15-2023') and ([ReceivedTime] > '11-14-2023')"