使用 Powershell 设置 Mailkit 时看到的邮件

Set Message as seen with Mailkit using Powershell

提问人:Jeremy C. 提问时间:9/20/2023 更新时间:9/20/2023 访问量:33

问:

我正在尝试在 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)
 
PowerShell 邮件工具包

评论


答: 暂无答案