Bonjour,

Voici un article technique principalement dans le but de conserver ce code pour une réutilisation ultérieure.

Lors des développements des flux d’alimentation de ma mission, j’ai eu besoin d’envoyer des mails pour :

  • Avertir de la disponibilité des fichiers
  • Suivre l’état des flux

Je laisse donc ici le script en C# que j’ai utilisé dans une script task et le script VB qui m’a permis de faire le script C#.

using System.Net.Mail ;

using System.Net;

using System;

using System.Data;

using Microsoft.SqlServer.Dts.Runtime;

using System.Windows.Forms;

namespace ST_b88226a71961424cadf01e18c7537654.csproj

{

[System.AddIn.AddIn(« ScriptMain », Version = « 1.0 », Publisher = « », Description = « »)]

public partial class ScriptMain : Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTARTScriptObjectModelBase

{

#region VSTA generated code

enum ScriptResults

{

Success = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Success,

Failure = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Failure

};

#endregion

public void Main()

{

MailMessage myHtmlMessage;

SmtpClient mySmtpClient;

String body = « Corps du mail »;

String destinataire= « destinataire@mail.com »;

String expediteur = « expediteur@mail.com »;

String objet = »Objet »;

String smtp = « smtp.mail.fr »;

String mdp_smtp = « mdp smtp »;

String id_smtp = expediteur;

// Pour passer des variables provenant du flux

//body = (Dts.Variables.Add(« vMSG_Body »,true, »User », »3″)).ToString();

//adresseMail = (Dts.Variables.Add(« vMSG_Mail », true, « User », « 3 »)).ToString();

myHtmlMessage = new MailMessage(expediteur, destinataire, objet, body) ;

mySmtpClient = new SmtpClient(smtp, 25) ; //(ou 587)

mySmtpClient.EnableSsl = false ;

mySmtpClient.Credentials = new System.Net.NetworkCredential(id_smtp, mdp_smtp) ;

mySmtpClient.Send(myHtmlMessage) ;

Dts.TaskResult = (int)ScriptResults.Success;

}

}

}

En VB :

Imports System

Imports System.Data

Imports System.Math

Imports Microsoft.SqlServer.Dts.Runtime

Imports System.Net.Mail

Imports System.Net

Public Class ScriptMain

Public Sub Main()

Dim myHtmlMessage As MailMessage

Dim mySmtpClient As SmtpClient

myHtmlMessage = New MailMessage(« expediteur@mail.fr », « destinataire@mail.fr », « objet », « Contenu du mail »)

mySmtpClient = New SmtpClient(« smtp.mail.fr », 25)

mySmtpClient.EnableSsl = False

mySmtpClient.Credentials = New System.Net.NetworkCredential(« identifiant smtp », « mdp smtp »)

mySmtpClient.Send(myHtmlMessage)

Dts.TaskResult = Dts.Results.Success

End Sub

End Class

Sources :

Englestone – SSIS Send Mail Task Change SMTP Port

SQLShare – Parameterizing the Execute SQL Task in SSIS