Files
sql-scripts/TPDT-268 - ACP in task sequence/dba_storedProcedures/aps_Send_Mail.sql
2024-03-07 16:52:14 +01:00

139 lines
4.9 KiB
Transact-SQL

IF EXISTS (SELECT * FROM sys.objects where object_id = OBJECT_ID(N'[aps_Send_Mail]') AND OBJECTPROPERTY(object_id,N'IsProcedure') = 1)
DROP PROCEDURE [aps_Send_Mail]
GO
SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER OFF
GO
CREATE PROCEDURE [aps_Send_Mail]
@in_sender varchar(8000)= null,
@in_sender_name varchar(8000) = null,
@in_recipient varchar(8000) = null,
@in_priority varchar(15) = null,
@in_subject varchar(8000) = null,
@in_message varchar(8000) = null,
@in_message_file varchar(8000) = null,
@in_attachments varchar(8000) = null,
@in_server varchar(255) = null,
@in_dbmail_profile_name varchar(255) = null
AS
/*===========================================================================
Procedure pour envoi d'un email via SMTP par execution de la SP "xp_smtp_sendmail".
Pour rappel, la SP "xp_smtp_sendmail" n'est pas une SP officielle de Microsoft !
Des lors, il n'y a aucune garantie que cette SP fonctionne avec les versions futures
de SQL Server ! ==> Voir modif. de CMA du 07.02.07 !!
Parametres:
@in_sender = adresse email de l'expediteur (ex: "cm@bmc.ch") (--> version SQL 2000 only)
@in_sender_name (or NULL) = nom de l'expediteur (ex: "Christophe Marchand") (--> version SQL 2000 only)
@in_recipient = adresse email du destinataire (ex: "info@bmc.ch")
@in_priority (or NULL) = priorite (valeurs possibles: "LOW, NORMAL, HIGH")
@in_subject (or NULL) = sujet du message
@in_message (or NULL) = corps du message
@in_message_file (or NULL) = corps du message contenu dans un fichier
@in_attachments (or NULL) = pieces jointes (file1;file2;file3)
@in_server = nom du serveur par lequel doit transiter l'email (--> version SQL 2000 only)
@in_dbmail_profile_name = nom du profil de "Database Mail" a utiliser (--> version SQL 2005 only)
Creation: 19.11.04 / chris
Modifications :
01.12.04 / chris : Traitement des parametres "@in_message_file" et "@in_attachments"
07.03.07 / chris : Adaptation de la SP pour SQL 2005. (#cm01)
La SP "xp_smtp_sendmail" n'etant plus compatible sous SQL 2005,
j'utilise a la place "Database Mail" de SQL 2005, ainsi que la
SP fournie par Microsoft "sp_send_dbmail".
06.07.07 / chris : Adaptation du commentaire d'un parametre ci-dessus
07.09.07 / chris : Adaptation commentaires ci-dessus
17.03.20 / FLA : Suppression version SQL 2000
09.02.21 / SPE : #TFS62610# - Update all mail configurations to avoid SPAM
============================================================================*/
set nocount on
declare @result_sp INT,
@errno INT,
@errmsg VARCHAR(255),
@Mailsubject VARCHAR(255)
/*--------------- Remplacement des empty strings par des null ---------------*/
if @in_recipient = ''
select @in_recipient = null
if @in_priority = ''
select @in_priority = null
if @in_subject = ''
select @in_subject = null
if @in_message = ''
select @in_message = null
if @in_message_file = ''
select @in_message_file = null
if @in_attachments = ''
select @in_attachments = null
if @in_dbmail_profile_name = '' /* #cm01 */
select @in_dbmail_profile_name = null
/*-------------------------- Version de SQL Server --------------------------*/
/*------------------------ Test des parametres input ------------------------*/
if (@in_dbmail_profile_name is null) /* #cm01 */
or @in_recipient is null
begin
select @errno = 70003,
@errmsg = '(APS) Invalid input parameters !'
goto error_99
end
/*----------------------------- Valeurs par defaut --------------------------*/
if @in_priority is null
select @in_priority = 'NORMAL'
/*--------------- Execution de la SP pour envoi de l'email SMTP -------------*/
/* La SP "sp_send_dbmail" ne permet pas d'inclure un fichier dans le corps
du message. De ce fait, je l'ajoute en tant que piece jointe.
*/
if @in_message_file is not null
select @in_attachments = @in_message_file + ';' + @in_attachments
set @Mailsubject = @in_subject + ' - [' + @@SERVERNAME + ']'
exec @result_sp = msdb.dbo.sp_send_dbmail
@profile_name = @in_dbmail_profile_name,
@recipients = @in_recipient,
@subject = @Mailsubject,
@importance = @in_priority,
@body = @in_message,
@file_attachments = @in_attachments
if @result_sp <> 0
begin
select @errno = 70003,
@errmsg = '(APS) Error executing sp_send_dbmail in aps_Send_Mail !'
goto error_99
end
/*------------------------- Retour a la SP appelante ------------------------*/
return(@@error)
/*-------------------------- Traitement des erreurs -------------------------*/
error_99:
raiserror (@errmsg, 16, 1)
return(@errno)
GO