等待Mail发送,然后从PowerShell中的sent-folder中删除它

时间:2016-02-25 14:44:24

标签: email powershell outlook-2010 outlook-redemption

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

我已经有了发送邮件的脚本,而且我还写了一个功能完善的函数来清除发送文件夹。

问题是邮件在发送时会保留在发件箱中,只有在实际发送时才会进入发送文件夹,但到那时我的脚本将会结束,而Clear-function将在没有已经清理了邮件。

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

代码:

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()
        }
    }
}

请帮助我,谢谢;)

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

首先不要通过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