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
