【问题标题】:Wait for Mail to send then delete it from sent-folder in PowerShell等待邮件发送,然后从 PowerShell 的已发送文件夹中删除它
【发布时间】:2016-06-08 09:54:53
【问题描述】:

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

到目前为止,我已经获得了发送邮件的脚本,并且我还编写了一个功能完善的函数来清除已发送的文件夹。

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

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

代码:

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

请帮助我,谢谢;)

【问题讨论】:

    标签: email powershell outlook-2010 outlook-redemption


    【解决方案1】:

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

    【讨论】:

    • 这不起作用。这是与工作相关的电子邮件的脚本,因此我们的交换服务器将拒绝Send-MailMessage由于策略原因。这是我能想到的唯一方法,并且可以发送邮件。
    • 它应该仍然可以通过Send-Mailmessage 发送 - 你只需要知道导致拒绝的“政策”并使用适当的参数来满足它。
    • 知道如何在不与服务器管理员交谈的情况下找到答案吗?也许某种逆向工程方法?或者邮件必须有多详细?
    • 首先使用 cmdlet 并研究您收到的错误。如果您遇到无法自行修复的问题,请咨询您的管理员。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-20
      • 2011-03-13
      • 1970-01-01
      相关资源
      最近更新 更多