139 lines
4.9 KiB
Transact-SQL
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
|