私はpowershellスクリプトを作成して、30人の添付ファイルを含むメールを送信しようとしています。電子メールはパーソナライズされているため、個別に送信する必要があります。このスクリプトは、添付ファイルなしでうまく動作します。添付ファイルを使用するとSend-MailMessageは2回目の接続をすべて終了します
送信-はMailMessage:トランスポート接続にデータを書き込むことができません:添付ファイルを使用している場合しかし、送信-はMailMessageの他のすべてのインスタンスが失敗したと 既存の接続はリモートホストに強制的に切断されました。
メッセージを送信する間にどれくらい待っているか/休止しているかは関係ありません。数分待っても、最初のインスタンスは常に成功し、次は失敗し、次は成功します。スクリプトを実行している間に気付きました。偶数または奇数のctrl + cが成功を決定しますSend-MailMessageの最初のインスタンスの最後のメッセージが失敗すると、最初のメッセージは成功し、その逆もあります。
私のコードは非常に簡単です、私たちは、すべてのユーザーを持つ単一の配列を持っている、と
$array | foreach {
Write-Host "Sending Mail..."
Send-MailMessage -From '[email protected]' -To $_.EmailAddress
-SmtpServer 'fqdn'
-Attachments "1.pdf", "2.pdf"
-Subject 'Subject'
-Body ($html)
-BodyAsHtml
}
ので、出力はの線に沿って何かになります:
メールを送信.. 。
メール送信...
送信-はMailMessage:トランスポート接続にデータを書き込むことができません: 既存の接続はリモートホストによって強制的に閉じられました。
メール送信...
メール送信...
送信-はMailMessage: 既存の接続はリモートホストに強制的に切断されました:トランスポート接続にデータを書き込むことができません。
エラーがない場合、メールは完全に完全に届きます。ひとつひとつ試して以来(#1以外にも、
try { Send-MailMessage ... -EA Stop }
catch { Send-MailMessage }
をし、その結果として、30/30人々は(というより15/30)メールを受信します:
私はこれだけで行うことで、「修正」することができます)は失敗しますが、catchブロック内のコードは常に成功することができます。
もちろん、これは実際の解決策ではありません。私はそれをそのまま残すのは嫌です。誰がここで何が起こっているのか、どのようにそれを修正するための洞察を持っていますか?
アウトバウンドメールサーバーのように、単一の送信元IPからのアクティブな接続数に厳しい制限がありますか?私はあなたの回避策がひどい解決策ではないと思っています。私は素早くGoogleを行いました。手動で強制的に接続を閉じる強制的な方法はありません。 –
https://www.reddit.com/r/PowerShell/comments/4fhm8z/close_smtp_connection_between_sendmailmessage/ –
添付ファイルを使用すると問題が発生するのはなぜですか?私はこのサーバの制限を認識していないので、添付ファイルを取り除き、何百もの電子メールを数秒で送って何の問題もない。私はこの同じサーバーがちょうど1つのIPから50k +メールを昨日送り出したと思う。 –