提问人:Jeremy C. 提问时间:9/20/2023 更新时间:9/20/2023 访问量:33
使用 Powershell 设置 Mailkit 时看到的邮件
Set Message as seen with Mailkit using Powershell
问:
我正在尝试在 PS 中编写一个脚本,以通过 imap 获取所有未见/未读的消息并将它们导入 SQL-DB。导入后,我想将消息设置为所见并将其移动到子文件夹。一切正常,我无法弄清楚,如何将消息设置为已读。
我尝试过,但出现错误:[MimeKit.MimeMessage] 不包含名为“AddFlags”的方法。$Inbox_Folder.AddFlags($UID,([MailKit.MessageFlags]::Seen))
经过一番搜索,我发现 Add/Remove/SetFlags 已替换为 Store。所以我做了一个让我遇到这个错误:为“Store”和参数计数:“2”找到了多个模棱两可的重载。
经过一番挖掘,我意识到我需要一个 IStoreFlagsRequest。但我根本无法弄清楚如何在 PS 中写那一行。任何帮助将不胜感激。$Inbox_Folder.Store($UID,[MailKit.MessageFlags]::Seen)
下面是我的脚本
Add-Type -Path "$PSScriptRoot\MailKit.dll"
Add-Type -Path "$PSScriptRoot\MimeKit.dll"
$Mail_Server = '***'
$Mail_Port = '***'
$Mail_Username = '***'
$Mail_Password = '***'
$Imap_Client = New-Object MailKit.Net.Imap.ImapClient
$Imap_Client.Connect($Mail_Server,$Mail_Port)
$Imap_Client.Authenticate($Mail_Username,$Mail_Password)
$Imap_Client.Inbox.Open([MailKit.FolderAccess]::ReadWrite) | Out-Null
$Root_Folder = $Imap_Client.GetFolder($Imap_Client.PersonalNamespaces[0])
$Inbox_Folder = $Root_Folder.GetSubfolder("INBOX")
$Archive_Folder = $Inbox_Folder.GetSubfolder("Archiv")
$Mail_UIDs = $Imap_Client.Inbox.Search([MailKit.Search.SearchQuery]::AND([MailKit.Search.SearchQuery]::NotSeen,[MailKit.Search.SearchQuery]::New))
if($Mail_UIDs.Count -gt 0)
{
ForEach($UID in $Mail_UIDs.GetEnumerator())
{
#do stuff
$Inbox_Folder.AddFlags($UID,([MailKit.MessageFlags]::Seen)) #not working
$Imap_Client.Inbox.MoveTo($UID,$Archive_Folder) | Out-Null #works
}
}
$Imap_Client.Disconnect($true)
答: 暂无答案
评论