Powershell - 从 Gmail 下载附件

Powershell - Download Attachment from Gmail

这就是我到目前为止所做的:

$dll = 'C:\Users\xxxx\Desktop\v4.6\imapx.dll'
[Reflection.Assembly]::LoadFile($dll)

$Username = "xxxxxx"
$Password = "yyyyyy"


# Initialize the IMAP client
$client = New-Object ImapX.ImapClient

###set the fetching mode to retrieve the part of message you want to retrieve, 
###the less the better
$client.Behavior.MessageFetchMode = "Full"
$client.Host = "imap.gmail.com"
$client.Port = 993
$client.UseSsl = $true
$client.Connect()
$client.Login($Username, $Password)

# Get folder/label object containing emails you want to read from
$res = $client.folders| where { $_.path -eq 'Inbox' }


# Search email threads inside the subfolder
$numberOfMessagesLimit = 10
$messages = $res.search("All", $client.Behavior.MessageFetchMode, $numberOfMessagesLimit)

# Display the messages in a formatted table
$messages | ft *


foreach($m in $messages){
$m.Subject
foreach($r in $m.Attachments){
$r | Out-File C:\Users\xxxx\Desktop\x\log.txt
    }
 }

我在 log.txt 中得到了有关附件文件的信息。

ContentId               : 
FileData                : {120, 120, 120, 120}
FileName                : test.txt
Downloaded              : True
ContentType             : text/plain; name=test.txt; charset=US-ASCII
ContentTransferEncoding : Base64
FileSize                : 4

好的,非常好....但现在的问题是,我怎样才能下载附件本身??! :D

参考the documentation:

foreach($m in $messages) {
    $m.Subject
    foreach($r in $m.Attachments) {
        $r.Download()
        $r.Save('C:\Users\xxxx\Desktop\x\')
    }
}