Comment puis-je envoyer un email en utilisant T-SQL alors que l'adresse email est stockée dans une table? Je veux parcourir la table et pouvoir envoyer un email. Je ne peux pas trouver un bon exemple de le faire jusqu'à présent.
Merci de votre aide
Étape 1) Créer un profil et un compte
Vous devez créer un profil et un compte à l'aide de l'option Configurer le courrier de la base de données Wizard, accessible depuis le menu contextuel Configurer le courrier de la base de données du nœud Courrier de la base de données dans le nœud Gestion. Cet assistant permet de gérer les comptes, les profils et les paramètres globaux de messagerie de base de données.
Étape 2)
COURIR:
sp_CONFIGURE 'show advanced', 1
GO
RECONFIGURE
GO
sp_CONFIGURE 'Database Mail XPs', 1
GO
RECONFIGURE
GO
Étape 3)
USE msdb
GO
EXEC sp_send_dbmail @profile_name='yourprofilename',
@recipients='[email protected]',
@subject='Test message',
@body='This is the body of the test message.
Congrates Database Mail Received By you Successfully.'
Pour parcourir la table
DECLARE @email_id NVARCHAR(450), @id BIGINT, @max_id BIGINT, @query NVARCHAR(1000)
SELECT @id=MIN(id), @max_id=MAX(id) FROM [email_adresses]
WHILE @id<=@max_id
BEGIN
SELECT @email_id=email_id
FROM [email_adresses]
set @query='sp_send_dbmail @profile_name=''yourprofilename'',
@recipients='''+@email_id+''',
@subject=''Test message'',
@body=''This is the body of the test message.
Congrates Database Mail Received By you Successfully.'''
EXEC @query
SELECT @id=MIN(id) FROM [email_adresses] where id>@id
END
Publié ceci sur le lien suivant http://ms-sql-queries.blogspot.in/2012/12/how-to-send-email-from-sql-server.html
Vous pouvez envoyer des e-mails en mode natif depuis SQL Server à l'aide de Database Mail. C'est un excellent outil pour informer les administrateurs système des erreurs ou autres événements de base de données. Vous pouvez également l'utiliser pour envoyer un rapport ou un courrier électronique à un utilisateur final. La syntaxe de base utilisée est la suivante:
EXEC msdb.dbo.sp_send_dbmail
@recipients='[email protected]',
@subject='Testing Email from SQL Server',
@body='<p>It Worked!</p><p>Email sent successfully</p>',
@body_format='HTML',
@from_address='Sender Name <[email protected]>',
@reply_to='[email protected]'
Avant utilisation, le courrier de base de données doit être activé à l'aide de l'assistant de configuration du courrier de base de données ou de sp_configure. Une base de données ou un administrateur Exchange peut avoir besoin de vous aider à configurer cette . Voir http://msdn.Microsoft.com/en-us/library/ms190307.aspx Et http://www.codeproject.com/Articles/485124/Configuring-Database-Mail-in-SQL-Server pour plus d'informations.
Voici un exemple de concaténation des adresses électroniques d'une table dans un paramètre @recipients unique:
CREATE TABLE #emailAddresses (email VARCHAR(25))
INSERT #emailAddresses (email) VALUES ('[email protected]')
INSERT #emailAddresses (email) VALUES ('[email protected]')
INSERT #emailAddresses (email) VALUES ('[email protected]')
DECLARE @recipients VARCHAR(MAX)
SELECT @recipients = COALESCE(@recipients + ';', '') + email
FROM #emailAddresses
SELECT @recipients
DROP TABLE #emailAddresses
Les @recipients résultants seront:
Pour que le serveur SQL envoie une notification par courrier électronique, vous devez créer un profil de messagerie à partir de la gestion, courrier de base de données.
1) Utilisateur Cliquez avec le bouton droit de la souris pour afficher le menu du profil de messagerie et choisir de configurer le courrier de la base de données.
2) choisissez la première ouverture (configurez un courrier de base de données en effectuant les tâches suivantes) et appuyez sur suivant .__ Remarque: si le SMTP n’est pas configuré, veuillez vous reporter à l’URL ci-dessous.
http://www.symantec.com/business/support/index?page=content&id=TECH86263
3) dans le deuxième écran, renseignez le nom du profil et ajoutez un compte SMTP, puis appuyez sur suivant.
4) choisissez le type de compte mail (public ou privé) puis appuyez sur next
5) modifiez les paramètres liés aux options d'envoi du courrier et appuyez sur suivant 6) appuyez sur terminer
Maintenant, pour que le serveur SQL envoie un courrier électronique si l’action X s’est produite, vous pouvez le faire via un déclencheur ou un travail (ce ne sont pas les seuls moyens courants).
1) vous pouvez créer un travail à partir d’un agent de serveur SQL, puis cliquer avec le bouton droit de la souris sur les opérateurs et vérifier les e-mails (saisissez votre email, par exemple), puis appuyez sur OK puis cliquez sur Travaux et choisissez un nouveau travail. les étapes depuis, nom, ... etc et de l'onglet notification sélectionnez le profil que vous avez créé.
2) des déclencheurs, veuillez vous reporter à l'exemple ci-dessous.
AS
declare @results varchar(max)
declare @subjectText varchar(max)
declare @databaseName VARCHAR(255)
SET @subjectText = 'your subject'
SET @results = 'your results'
-- write the Trigger JOB
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'SQLAlerts',
@recipients = '[email protected]',
@body = @results,
@subject = @subjectText,
@exclude_query_output = 1 --Suppress 'Mail Queued' message
GO
Vous pouvez également le faire avec un curseur . En supposant que vous ayez créé un compte et un profil, par exemple. "profil" et un compte et vous avez la table qui tient les emails prêts par exemple. "EmailMessageTable", vous pouvez effectuer les opérations suivantes:
USE database_name
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE mass_email AS
declare @email nvarchar (50)
declare @body nvarchar (255)
declare test_cur cursor for
SELECT email from [dbo].[EmailMessageTable]
open test_cur
fetch next from test_cur into
@email
while @@fetch_status = 0
begin
set @body = (SELECT body from [dbo].[EmailMessageTable] where email = @email)
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'profile',
@recipients = @email,
@body = @body,
@subject = 'Credentials for Web';
fetch next from test_cur into
@email
end
close test_cur
deallocate test_cur
Ensuite, il ne vous reste plus qu'à exécuter la procédure stockée.
EXECUTE mass_email
GO
parfois en l'absence de sp_send_dbmail directement. Vous pouvez utiliser 'msdb.dbo.sp_send_dbmail' pour essayer (Fonctionne correctement sous Windows Server 2008 R2 et est testé).
Pour envoyer des messages via SQL Server, nous devons configurer un profil de messagerie DB. Nous pouvons utiliser l'option de messagerie T-SQl ou SQL Database du serveur SQL pour créer un profil. Après, le code est utilisé pour envoyer un courrier électronique via une requête ou une procédure stockée.
Utilisez le lien ci-dessous pour créer un profil de messagerie DB
http://www.freshcodehub.com/Article/42/configure-database-mail-in-sql-server-database
http://www.freshcodehub.com/Article/43/create-a-database-mail-configuration-using-t-sql-script
--Sending Test Mail
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'TestProfile',
@recipients = 'To Email Here',
@copy_recipients ='CC Email Here', --For CC Email if exists
@blind_copy_recipients= 'BCC Email Here', --For BCC Email if exists
@subject = 'Mail Subject Here',
@body = 'Mail Body Here',
@body_format='HTML',
@importance ='HIGH',
@file_attachments='C:\Test.pdf'; --For Attachments if exists