等待邮件发送然后将其从 PowerShell 中的已发送文件夹中删除

Wait for Mail to send then delete it from sent-folder in PowerShell

我目前正在编写一个脚本来自动发送一些邮件。 我想发送一封自动邮件,为了一个干净的邮箱,我希望这些自动邮件立即从已发送文件夹中删除。

我已经得到了发送邮件的脚本,我还编写了一个功能完美的函数来清除已发送的文件夹。

问题是邮件在发送时会留在发件箱中,只有在实际发送时才会进入已发送文件夹,但到那时我的脚本将结束并且清除功能将具有没有清除邮件就通过了。

我需要某种计时器,或者如果可能的话,需要一些触发事件来确定邮件实际发送并存储在已发送文件夹中的时间。

代码:

function Send
{
    $mItem = $ol.CreateItem(0)
    $mail = $routlook.GetRDOObjectFromOutlookObject($mItem)

    $mail.To = "users@mail.com"
    $mail.Subject = "some subject"
    $mail.Body = "some body stuff"
    $mail.Attachments.Add("<path to attachment>")

    $mail.Send()
    Clear


}

function Clear
{
    $SItems = $sent.Items
    foreach($s in $SItems)
    {
        if( $s.To -eq "'user@mail.com'")
        {
            $s.Delete()
        }
    }
}

请帮助我,谢谢;)

首先不要通过 Outlook 发送邮件,除非出于某些奇怪的原因绝对必须这样做。请改用 Send-Mailmessage

Send-MailMessage -to users@mail.com -subject "Some Subject" -body "some body stuff" -attachments <Collection of file paths> -SmtpServer Your_SMTP_HOST -from fromuser@mail.com

MailItem.DeleteAfterSubmit 属性 设置为 true - 邮件在发送后将永远不会移动到“已发送邮件”文件夹。