1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
| CREATE PROCEDURE [dbo].[P_MESSAGE_SEND]
AS
Declare @From varchar(128), @To varchar(128), @Subject varchar(128),
@Body varchar(5000)
Declare @iMsg int
Declare @hr int
Declare @source varchar(255)
Declare @description varchar(500)
Declare @output varchar(1000)
Declare @ID_MSG INT
--*** Creation de l'objet CDO.Message ******
EXEC @hr = sp_OACreate 'CDO.Message', @iMsg OUT
--*** Configuration de l'objet message ******
-- Configuration d'un serveur SMTP distant.
EXEC @hr = sp_OASetProperty @iMsg, 'Configuration.fields("http://schemas.microsoft.com/cdo/configuration/sendusing").Value','2'
-- Nom du serveur et adresse IP
-- Remplacez ??? par le nom du serveur SMTP ou son adresse IP
EXEC @hr = sp_OASetProperty @iMsg, 'Configuration.fields("http://schemas.microsoft.com/cdo/configuration/smtpserver").Value', 'smtp.free.fr'
-- Sauvegarde les infos
EXEC @hr = sp_OAMethod @iMsg, 'Configuration.Fields.Update', null
-- regarder si des mails sont a envoyer
WHILE (SELECT COUNT(*) FROM T_MESSAGE_MSG WHERE MSG_DH_ENVOI IS NULL) > 0
BEGIN
-- si oui sélectionner le premier
SELECT TOP 1 @ID_MSG=MSG_ID, @Subject=MSG_TITRE ,@Body=MSG_TEXTE FROM T_MESSAGE_MSG WHERE MSG_DH_ENVOI IS NULL
-- Alimentation destinataire principal --
SET @To=''
SELECT @To=@To + DST_EMAIL + ', '
FROM T_DESTINATAIRE_DST DST INNER JOIN T_ENVOYE_EVO EVO ON DST.DST_ID=EVO.DST_ID
INNER JOIN T_TYPE_ENVOI_TEV TEV ON EVO.TEV_ID=TEV.TEV_ID
WHERE MSG_ID=@ID_MSG AND UPPER(TEV_CODE)='TO'
SET @To=SUBSTRING(@To,1,LEN(@To)-1)
-- remplacez !!! par votre mail d'expéditeur
-- j'ai bien sûr mis mon mail, j'ai pas laissé comme ça
SET @From='monmail@free.fr'
-- Mise en place des paramètres du mail
EXEC @hr = sp_OASetProperty @iMsg, 'To', @To
EXEC @hr = sp_OASetProperty @iMsg, 'From', @From
EXEC @hr = sp_OASetProperty @iMsg, 'Subject', @Subject
-- Type mime : si mail en HTML remplacez 'TextBody' par 'HTMLBody'
EXEC @hr = sp_OASetProperty @iMsg, 'TextBody', @Body
EXEC @hr = sp_OAMethod @iMsg, 'Send', NULL
-- Gestion de l'erreur
IF @hr <>0
UPDATE T_MESSAGE_MSG
SET MSG_DH_ENVOI=CURRENT_TIMESTAMP,
MSG_FAILED=1
WHERE MSG_ID=@ID_MSG
ELSE
UPDATE T_MESSAGE_MSG
SET MSG_DH_ENVOI=CURRENT_TIMESTAMP
WHERE MSG_ID=@ID_MSG
-- destruction de l'objet après utilisation
EXEC @hr = sp_OADestroy @iMsg
END
GO |
Partager