COMMENT FAIRE : Envoyer du courrier électronique sans utiliser SQL Mail dans SQL Server

Traductions disponibles Traductions disponibles
Numéro d'article: 312839
Agrandir tout | Réduire tout

Sommaire

Résumé

SQL Mail fournit une méthode facile pour envoyer et lire du courrier électronique à partir de SQL Server. Toutefois,
SQL Mail étant une application MAPI (Messaging Application Programming Interface), il faut qu'un sous-système MAPI
soit présent sur le serveur. Microsoft Windows 2000 ne fournit pas de sous-système MAPI
(Microsoft Windows NT 4.0 installe un sous-système MAPI lorsque vous installez
Windows Messaging). Par conséquent, pour utiliser SQL Mail, vous devez installer un client MAPI
tel que Microsoft Outlook.

Vous pouvez utiliser d'autres méthodes pour envoyer directement du courrier SMTP (Simple Mail Transport Protocol)
à partir de SQL Server comme les objets Collaboration Data Objects pour NT Server (CDONTS) ou Collaboration
Data Objects pour Windows 2000 (CDOSYS) en association avec les procédures stockées d'Automation sp_OA SQL Server OLE.
Cet article fournit un exemple de l'utilisation des techniques susmentionnées
pour envoyer du courrier électronique à un serveur de messagerie Internet. Vous pouvez développer davantage la technique
pour fournir un système de messagerie plus robuste. Par exemple, vous pouvez ajouter un code de traitement des erreurs.
Les méthodes dans l'exemple ne fournissent pas de moyen pour lire ou traiter le courrier électronique.

REMARQUE : Ces exemples de programmation illustrent une technique que vous pouvez utiliser pour invoquer le modèle d'objet CDO
à partir de Transact-SQL. Vous êtes responsable de toutes les extensions de programmation aux exemples
ou de tout essai de contrainte requis pour l'exécution du code dans un environnement de production.

Microsoft fournit des exemples de programmation à des fins d'illustration uniquement, sans garantie explicite ou implicite, y compris, de manière non limitative, les garanties implicites de qualité marchande et/ou d'adéquation à un usage particulier. Cet article suppose que vous connaissez le langage de programmation présenté et les outils utilisés pour créer et déboguer des procédures. Les techniciens du Support technique Microsoft peuvent vous expliquer les fonctionnalités d'une procédure particulière, mais ils ne peuvent pas modifier les exemples en vue de vous fournir des fonctionnalités supplémentaires ou de créer des procédures répondant à vos besoins spécifiques. Si vous ne maîtrisez que partiellement la programmation, vous pouvez contacter un Microsoft Certified Partner ou l'assistance téléphonique (payante) de Microsoft au (800) 936-5200 (États-Unis). Pour plus d'informations sur les Microsoft Certified Partners, reportez-vous au site Web de Microsoft ( en anglais) à l'adresse suivante :
https://partner.microsoft.com/global/30000104
Pour plus d'informations sur les options de support technique disponibles et la procédure pour contacter Microsoft, reportez-vous au site Web de Microsoft à l'adresse suivante :
http://support.microsoft.com/default.aspx?scid=fh;[LN];CNTACTMS
REMARQUE : Sauf mention contraire, les noms de sociétés, d'organisations, de produits, de personnes ou les événements mentionnés dans les exemples sont fictifs.
Toute ressemblance avec des noms ou des événements réels est purement fortuite et involontaire.


Utiliser CDO pour NT Server (CDONTS)

CDONTS est un serveur OLE spécifique à SMTP (Simple Mail Transfer Protocol) spécifiquement conçu pour fournir
une fonctionnalité de messagerie aux applications basées sur le Web. En tant que tel, CDONTS prend en charge l'envoi de courrier électronique HTML,
contrairement aux applications MAPI telles que SQL Mail. Par défaut, Microsoft Internet Information
Server (IIS) 4.0, ou version ultérieure, installe CDONTS. De même, par défaut, Microsoft Windows 2000 installe
Microsoft Internet Information Server (IIS) 5.0.

Pour plus d'informations sur CDONTS, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :
177850 INFO : Quelle est la différence entre CDO 1.2 et CDONTS ?
CDONTS envoie du courrier électronique par SMTP au serveur local. Si vous n'avez pas de serveur SMTP sur votre serveur
local, vous pouvez utiliser le serveur SMTP virtuel installé par IIS pour router votre courrier électronique SMTP vers le serveur
de messagerie SMTP adéquat. Pour utiliser CDONTS afin d'envoyer du courrier électronique à partir de SQL Server, procédez comme suit :

  1. Installez et exécutez IIS sur votre ordinateur SQL Server.
  2. Spécifiez votre serveur de messagerie SMTP comme "hôte actif" de façon à ce que le service SMTP IIS
    route automatiquement tout courrier électronique SMTP envoyé à votre serveur local vers votre serveur de messagerie SMTP pour la livraison.
  3. Créez une procédure stockée dans SQL Server que vous pouvez utiliser pour envoyer du courrier électronique.
Lorsque vous utilisez CDONTS au lieu de SQL Mail, vous n'avez pas besoin d'avoir un client de messagerie tel que Microsoft Outlook
installé sur votre ordinateur SQL Server, ni d'un serveur Microsoft Exchange. Vous pouvez
utiliser tout serveur de messagerie prenant en charge le courrier électronique SMTP comme votre "hôte actif". Toutefois, vous ne pouvez pas lire et traiter
de courrier électronique envoyé à votre ordinateur SQL Server à l'aide de CDONTS. Vous ne pouvez pas non plus remplacer la fonctionnalité de SQL Agent Mail.

Les instructions qui suivent s'appuient sur Microsoft Windows 2000. Si IIS 4.0 est installé sur l'ordinateur, vous pouvez configurer
Microsoft Windows NT 4.0 de la même façon. Toutefois, les étapes peuvent différer légèrement.

Pour plus d'informations sur la procédure pour configurer l'hôte actif sur Microsoft Windows NT 4.0, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :
230235 XCON : Configurer le service SMTP IIS pour relayer le courrier SMTP

Configurer l'hôte actif

  1. Dans la barre des tâches, cliquez sur Démarrer, pointez sur Programmes, sur Outils d'administration, puis cliquez sur
    Gestionnaire des services Internet pour ouvrir le gestionnaire IIS.
  2. Ouvrez l'arbre pour votre serveur. Cliquez avec le bouton droit sur Serveur virtuel SMTP par défaut, puis cliquez sur Propriétés.
  3. Allez sur l'onglet Remise, puis sur Options avancées.
  4. Entrez votre serveur de messagerie SMTP dans la zone de texte Hôte actif. (Contactez votre administrateur de messagerie si
    vous ne connaissez pas le nom de votre serveur de messagerie SMTP.)
  5. Assurez-vous que le service SMTP (Simple Mail Transfer Protocol) fonctionne. Le service SMTP
    fait partie du service IIS Admin, celui-ci doit donc fonctionner également.

Créer une procédure stockée pour envoyer du courrier électronique CDONTS

Vous pouvez utiliser un code semblable au code suivant pour créer une procédure stockée dans la base de données principale
pour envoyer du courrier électronique à l'aide des procédures stockées SQL Server OLE Automation pour invoquer le modèle d'objets CDONTS :
CREATE PROCEDURE [dbo].[sp_send_cdontsmail] 
@From varchar(100),
@To varchar(100),
@Subject varchar(100),
@Body varchar(4000),
@CC varchar(100) = null,
@BCC varchar(100) = null
AS
Declare @MailID int
Declare @hr int
EXEC @hr = sp_OACreate 'CDONTS.NewMail', @MailID OUT
EXEC @hr = sp_OASetProperty @MailID, 'From',@From
EXEC @hr = sp_OASetProperty @MailID, 'Body', @Body
EXEC @hr = sp_OASetProperty @MailID, 'BCC',@BCC
EXEC @hr = sp_OASetProperty @MailID, 'CC', @CC
EXEC @hr = sp_OASetProperty @MailID, 'Subject', @Subject
EXEC @hr = sp_OASetProperty @MailID, 'To', @To
EXEC @hr = sp_OAMethod @MailID, 'Send', NULL
EXEC @hr = sp_OADestroy @MailID
Ensuite, utilisez la procédure stockée et fournissez les paramètres corrects :
exec sp_send_cdontsmail 'someone@microsoft.com','someone2@microsoft.com','Test of CDONTS','It works'
CDONTS envoie le courrier électronique au serveur virtuel SMTP local qui route ensuite le courrier électronique vers le serveur de messagerie SMTP
spécifié dans la zone de texte Hôte actif. Le serveur de messagerie SMTP envoie le courrier à l'adresse spécifiée dans
l'argument À : ("someone2@microsoft.com" dans l'exemple). Le nom spécifié dans l'argument De :
apparaît comme l'expéditeur du courrier ("someone@microsoft.com" dans cet exemple) avec pour objet "Test of
CDONTS" et pour message "It works" (ça marche) comme corps du message. Personne n'est en copie sur le courrier électronique parce que
vous n'avez pas fourni d'argument pour les champs CC et BCC.

Vous pouvez développer davantage l'exemple pour envoyer du courrier électronique basé sur HTML ou des pièces jointes. Pour obtenir de la documentation
sur CDONTS, reportez-vous au site Web (en anglais) suivant :

Bibliothèque MSDN

Dans le volet gauche, cliquez pour développer Collaboration et Messagerie, cliquez pour développer Collaboration Data
Objects
, puis pour développer CDO 1.2.1.

Vous pouvez trouver de la documentation pour les procédures stockées SQL Server OLE Automation dans la documentation en ligne de Microsoft SQL
Server 2000.

Utiliser CDO pour Windows 2000 (CDOSYS)

CDOSYS fournit un modèle d'objet pour le développement des applications de messagerie dans Microsoft 
Windows 2000 et fournit une fonctionnalité améliorée sur le CDO existant pour la bibliothèque Windows NT 
Server (CDONTS). CDOSYS requiert Windows 2000 et un serveur SMTP local ou distant.
Vous pouvez configurer CDOSYS pour pointer par programme vers les serveurs SMTP afin de donner aux développeurs la souplesse
pour configurer les serveurs SMTP.

Pour plus d'informations sur CDOSYS, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :
195683 INFO : Relation entre les bibliothèques 1.x CDO et CDOSYS.DLL
Étant donné que CDOSYS peut envoyer du courrier électronique à un serveur SMTP distant, CDOSYS ne requiert pas que Internet 
Information Server soit installé et fonctionne sur votre ordinateur SQL Server. Vous n'êtes pas non plus obligé de configurer
le serveur virtuel SMTP. Tout ce que vous avez à faire consiste à créer une procédure stockée dans SQL Server que vous pouvez
utiliser pour envoyer du courrier électronique.

Lorsque vous utilisez CDOSYS au lieu de SQL Mail, vous n'avez pas besoin d'avoir un client de messagerie tel que Microsoft Outlook
installé sur votre ordinateur SQL Server. Vous n'avez pas non plus besoin d'avoir un serveur Exchange. Vous pouvez utiliser tout
serveur de messagerie qui prend en charge la messagerie SMTP comme votre serveur de messagerie SMTP. Toutefois, vous ne pouvez pas lire et traiter
de courrier électronique envoyé à votre ordinateur SQL Server en utilisant CDOSYS. Vous ne pouvez pas non plus remplacer la fonctionnalité de
SQL Agent Mail.

L'utilisation de CDOSYS avec l'objet d'automation OLE SQL s'appuie sur l'automation OLE SQL Server pour invoquer
le modèle d'objet CDOSYS et a été testé avec SQL Server 2000 Service Pack 1 (SP1) et SQL Server 
2000Service Pack 2 (SP2) Microsoft ne garantit pas que CDOSYS puisse être appelé à partir des procédures stockées d'automation OLE
sur les versions de SQL Server antérieures à SQL Server 2000 SP1.

Créer une procédure stockée pour envoyer du courrier électronique CDOSYS

Vous pouvez utiliser un code semblable au code suivant pour créer une procédure stockée dans la base de données principale
afin d'envoyer du courrier électronique à l'aide des procédures stockées SQL Server OLE Automation pour invoquer le modèle d'objet CDOSYS :
CREATE PROCEDURE [dbo].[sp_send_cdosysmail] 
   @From varchar(100) ,
   @To varchar(100) ,
   @Subject varchar(100)=" ",
   @Body varchar(4000) =" "
/*********************************************************************

This stored procedure takes the above parameters and sends an e-mail. 
All of the mail configurations are hard-coded in the stored procedure. 
Comments are added to the stored procedure where necessary.
Reference to the CDOSYS objects are at the following MSDN Web site:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cdosys/html/_cdosys_messaging.asp

***********************************************************************/ 
   AS
   Declare @iMsg int
   Declare @hr int
   Declare @source varchar(255)
   Declare @description varchar(500)
   Declare @output varchar(1000)

--************* Create the CDO.Message Object ************************
   EXEC @hr = sp_OACreate 'CDO.Message', @iMsg OUT

--***************Configuring the Message Object ******************
-- This is to configure a remote SMTP server.
-- http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cdosys/html/_cdosys_schema_configuration_sendusing.asp
   EXEC @hr = sp_OASetProperty @iMsg, 'Configuration.fields("http://schemas.microsoft.com/cdo/configuration/sendusing").Value','2'
-- This is to configure the Server Name or IP address. 
-- Replace MailServerName by the name or IP of your SMTP Server.
   EXEC @hr = sp_OASetProperty @iMsg, 'Configuration.fields("http://schemas.microsoft.com/cdo/configuration/smtpserver").Value', 'MailServerName' 

-- Save the configurations to the message object.
   EXEC @hr = sp_OAMethod @iMsg, 'Configuration.Fields.Update', null

-- Set the e-mail parameters.
   EXEC @hr = sp_OASetProperty @iMsg, 'To', @To
   EXEC @hr = sp_OASetProperty @iMsg, 'From', @From
   EXEC @hr = sp_OASetProperty @iMsg, 'Subject', @Subject

-- If you are using HTML e-mail, use 'HTMLBody' instead of 'TextBody'.
   EXEC @hr = sp_OASetProperty @iMsg, 'TextBody', @Body
   EXEC @hr = sp_OAMethod @iMsg, 'Send', NULL

-- Sample error handling.
   IF @hr <>0 
     select @hr
     BEGIN
       EXEC @hr = sp_OAGetErrorInfo NULL, @source OUT, @description OUT
       IF @hr = 0
         BEGIN
           SELECT @output = '  Source: ' + @source
           PRINT  @output
           SELECT @output = '  Description: ' + @description
           PRINT  @output
         END
       ELSE
         BEGIN
           PRINT '  sp_OAGetErrorInfo failed.'
           RETURN
         END
     END

-- Do some error handling after each step if you need to.
-- Clean up the objects created.
   EXEC @hr = sp_OADestroy @iMsg
   go
Ensuite, utilisez la procédure stockée que vous avez créée et fournissez les paramètres corrects :
   declare @Body varchar(4000)
   select @Body = 'This is a Test Message'
   exec sp_send_cdosysmail 'someone@microsoft.com','someone2@microsoft.com','Test of CDOSYS',@Body
CDOSYS envoie le courrier électronique au serveur de messagerie SMTP à distance spécifié comme cdoSMTPServerName.

Le serveur de messagerie SMTP envoie le courrier à l'adresse spécifiée dans l'argument À : ("someone2@microsoft.com" dans l'exemple). Le nom spécifié dans l'argument De : apparaît comme l'expéditeur du courrier électronique ("someone@microsoft.com"
dans cet exemple) avec pour objet "Test of CDOSYS" et le courrier électronique au format HTML contenu dans la variable
@sHTML variable.

Vous pouvez développer davantage cet exemple pour envoyer du courrier électronique au format texte ou des pièces jointes. Pour obtenir de la documentation sur
CDOSYS, reportez-vous au site Web (en anglais) suivant :

Bibliothèque MSDN

Dans le volet gauche, cliquez pour développer Collaboration et Messagerie, cliquez pour développer
Collaboration Data Objects, puis cliquez pour développer CDO pour Windows 2000.




Références

Documentation Microsoft SQL Server 2000 en ligne ; rubrique : "procédures stockées SQL Server OLE Automation"



Vous n'avez pas trouvé de réponse à votre question ? Consulter les Groupes de discussion Microsoft SQL Server (en anglais) à l'adresse suivante : Groupes de discussions Microsoft SQL Server

Si vous avez des commentaires à ce sujet ou sur d'autres articles de la Base de connaissances Microsoft, envoyez-nous un message à l'adresse suivante : SQLKB@Microsoft.com

Propriétés

Numéro d'article: 312839 - Dernière mise à jour: mercredi 16 février 2011 - Version: 5.3
Mots-clés : 
kbsqlserverengine kbhowtomaster KB312839
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com