已传送到 IIS 中的死信文件夹的电子邮件如何重新发送?

cat*_*lpa 8 windows iis email-server smtp

我们将 IIS 设置为 SMTP 中继。中继安全错误导致出站电子邮件被丢弃到 IIS SMTP 服务的死信文件夹。

是否有任何标准方法可以尝试重试发送这些电子邮件?

cat*_*lpa 14

根据微软支持

要重播位于死信文件夹中的邮件,请执行以下步骤:

  1. 停止 SMTP 服务。

    1. 打开 IIS 管理器。

    2. 右键单击“默认 SMTP 虚拟服务器”,然后单击“停止”。

  2. 复制位于死信文件夹中且具有.bad文件扩展名的所有文件。然后,将这些文件粘贴到 Pickup 文件夹。

  3. .bad.bad位于 Pickup 文件夹中的所有文件中删除文件扩展名。

  4. 启动 SMTP 服务。

    1. 打开 IIS 管理器。

    2. 右键单击“默认 SMTP 虚拟服务器”,然后单击“开始”。

  5. 验证消息是否已送达。


小智 6

创建批处理文件。

@Echo on 
net stop smtpsvc
move x:\inetpub\mailroot\badmail\\*.bad x:\inetpub\mailroot\pickup\\*.
cd\
net start smtpsvc
Run Code Online (Sandbox Code Playgroud)


小智 5

或者,您可以使用下面由我们内部技术专家创建的 Powershell 脚本。它删除文件的“传递失败”部分.BAD并重试消息,就好像它是原始发送一样。

$INETPUBHome = "C:\inetpub\mailroot"
$BadMail = "$INETPUBHome\BadMail"
$Pickup = "$INETPUBHome\Pickup"

stop-service -Name SMTPSVC

foreach ($f in Get-ChildItem -Path $BadMail -Filter *.bad) {
    $smpt_body = Get-Content -Path $f.FullName -Raw

    $r = $smpt_body -replace "(?smi)From:[^!]+?^From:", "From:"

    $r | Out-File -FilePath $Pickup\$($f.BaseName) -Encoding ascii

    Remove-Item $f.FullName
}

start-service -Name SMTPSVC
Run Code Online (Sandbox Code Playgroud)