$password = ConvertTo-SecureString "xxx" -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential "xxx@xxx.onmicrosoft.com",$password
$url = "https://outlook.office365.com/api/v1.0/me/messages"
$today = (Get-Date).AddDays(1).ToString("yyyy-MM-dd")
## Set date and query
$messageQuery = "" + $url + "?`$select=Id&`$filter=HasAttachments eq true and DateTimeReceived lt " + $today
$messages = Invoke-RestMethod $messageQuery -Credential $cred
## Loop through each results
foreach ($message in $messages.value)
{
# get attachments and save to file system
$query = $url + "/" + $message.Id + "/attachments"
$attachments = Invoke-RestMethod $query -Credential $cred
# in case of multiple attachments in email
foreach ($attachment in $attachments.value)
{
$attachment.Name
$path = "C:\path\" + $attachment.Name
$Content = [System.Convert]::FromBase64String($attachment.ContentBytes)
Set-Content -Path $path -Value $Content -Encoding Byte
}
}
当它运行时,只下载了10个附件,然后就停止了。我想弄清楚它在10点停止的原因,这样我就可以继续下载整个收件箱。
发布于 2018-02-22 06:02:46
我也有同样的问题。我认为它一次只能处理基于附件大小的X数量。
这(包括我的其余代码)每5分钟在Task Scheduler中运行一次,所以如果它在第一次运行时没有捕获所有邮件,它们将被处理,我猜在后续运行中一次处理10封邮件。
If ($DeleteEmail -eq "Y") {
$query2 = $url + "/" + $message.Id
Invoke-RestMethod $query2 -Credential $Credentials -Method Delete
}
https://stackoverflow.com/questions/48628823
复制相似问题