多次尝试执行发送邮件任务,以防发送邮件失败

Implement Send Mail Task with multiple tries in case if its failed to send mail

我在我的包裹中实施了发送邮件任务,该任务发送有关成功或失败的邮件通知。由于以下错误,发送邮件任务有时会失败。

Task failed: Send Mail Task with Success
Error Code: -1073548540
ErrorMessage: An error occurred with the following error message: "Failure sending mail. 
System.IO.IOException: Unable to read data from the transport connection: 
An existing connection was forcibly closed by the remote host.  
System.Net.Sockets.SocketException: An existing connection was forcibly closed by the remote host"

我已将此问题报告给网络管理员,但他们提出了以下建议。

The errors you are receiving from Mailhub can happen occasionally when trying to open a connection.  
The only way to resolve this issue is to force multiple retries.  If you can, please try to code in ~3-4 retries in your app.

我确定可以通过脚本任务来完成。我不确定我是否可以在使用发送邮件任务失败的情况下实现多次尝试。

我已经实现了 20 多个带有发送邮件任务的包。我尝试以最少的更改实现这种方法。

我尝试了 SQL 服务器代理作业步骤配置,用户可以选择配置重试次数和重试间隔,但 运行 整个包都失败了,这不是适合我的场景。 我必须 运行 只单独发送邮件任务,以防多次尝试发送电子邮件失败。

不要对你的项目做太多修改。

创建一个带有 for 容器的新包,您可以在其中控制重复次数。
创建一个int类型的变量。
添加包执行任务。
在正确执行的情况下,为中断 for 循环的变量赋值。
如果出错,您可以将其注册到数据库或任何您想要的地方。

下图是ssis-2008的,ssis-2012也是一样的

您提到了 C# 选项:

这是您要查找的逻辑:

int retryCount = 0;

retry:

try
{
     [Build and send your email]
}
catch
{
     retryCount++;
     if(retryCount<4) goto retry; //will try 4 times no matter what caused it to fall in to the catch
}