powershell send-maLmessage命令(〜2半分钟)后,电子邮件到达之前长时间延迟



我正在编写一个PowerShell脚本以检查多个PC中是否有特定文件,并在找到电子邮件时发送。它有效,但是电子邮件需要很长时间才能到达(大约两分半秒钟)。我尝试过仅运行send-mablemessage命令并获得相同的结果,因此它并不是脚本放慢脚本的不同部分。而且,这并不是所有时间都在紧缩 - 命令立即成功。Outlook在这座建筑物中发送并接收其他电子邮件,并且已经检查了它正在使用的SMTP服务器并使用了同一邮件。我搜索了其他遇到此问题的人,但仅找到了发送时间表或根本不起作用的示例。

这是我一直在使用的命令(to/from/trom/smtp服务器替换为占位符):

Send-MailMessage -To "Example Person <ex@example.com>" -From "Example Person <ex@example.com>" -Subject "Test mail" -SmtpServer "XXXXX.XXXXXXXXX.com" -dno onFailure, onSuccess, Delay

我应该注意,当我运行此操作时,-dno delay不会通知我电子邮件已被延迟(并且不是问题本身的源头,因为当我取出DNO参数时,我会得到相同的结果)。相反,两分钟后,我获得了成功通知。

,因为这是我想提供答案的第一个Google结果 - 因为这篇文章意味着PowerShell发送后不会立即关闭TCP连接,这可以使SMTP会话打开或其他东西。

但是,如果您结束PS会话,则它将关闭连接。如下:

,作为脚本块以脚本块的关闭而运行

$job = Start-Job -ScriptBlock {
    # specify arguments to send-mailmessage as argument hash below, then splat
    $mailArgs = $args[0];
    Send-MailMessage @mailArgs;
} -ArgumentList @(@{
    To = "Example Person <ex@example.com>";
    From = "Example Person <ex@example.com>";
    Subject = "Test mail";
    SmtpServer = "XXXXX.XXXXXXXXX.com";
    dno = @('onFailure', 'onSuccess', 'Delay');
});
# wait for job to complete (timeout after 30 seconds)
wait-job $job -Timeout 30;
# get result of job (if any)
receive-job $job;

最新更新