Hoe kan ik een e-mail verzenden met T-SQL, maar e-mailadres wordt in een tabel opgeslagen? Ik wil door de tafel lopen en in staat zijn om e-mail te verzenden. Ik kan niet een goed voorbeeld vinden om dit tot nu toe te doen.
Antwoord 1, Autoriteit 100%
stap 1) Maak profiel en account
U moet een profiel en account maken met behulp van de Wizard Configure Database Mail die toegankelijk is vanuit het contextmenu van de database-mailcontext van het databasemail-knooppunt in Management Knooppunt. Deze wizard wordt gebruikt om accounts, profielen en database-mail wereldwijde instellingen te beheren.
stap 2)
Uitvoeren:
sp_CONFIGURE 'show advanced', 1
GO
RECONFIGURE
GO
sp_CONFIGURE 'Database Mail XPs', 1
GO
RECONFIGURE
GO
Stap 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.'
om door de tabel te lussen
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
Dit op de volgende link geplaatst http://ms-sql-queries.blogspot.in/2012/12/how-to-send-email-from-sql-server.html
Antwoord 2, autoriteit 12%
U kunt native e-mail verzenden vanuit SQL Server met behulp van Database Mail. Dit is een geweldig hulpmiddel om systeembeheerders op de hoogte te stellen van fouten of andere databasegebeurtenissen. U kunt het ook gebruiken om een rapport of een e-mailbericht naar een eindgebruiker te sturen.
De basissyntaxis hiervoor is:
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]'
Voor gebruik moet Database Mail worden ingeschakeld met behulp van de wizard Database Mail Configuration of sp_configure. Een database- of Exchange-beheerder moet u mogelijk helpen bij het configureren hiervan.
Zien
http://msdn.microsoft.com/en-us/library/ms190307.aspx
en
http://www.codeproject.com/Articles/485124 /Configureren-Database-Mail-in-SQL-Servervoor meer informatie.
Antwoord 3, autoriteit 7%
Je kunt het ook met een cursor doen.
Ervan uitgaande dat u een account en een profiel hebt aangemaakt, b.v. “profiel” en een account en je hebt de tabel met de e-mails klaar, b.v. “EmailMessageTable” kunt u het volgende doen:
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
Hierna hoeft u alleen maar de opgeslagen procedure
uit te voeren
EXECUTE mass_email
GO
Antwoord 4, Autoriteit 2%
Hier is een voorbeeld van hoe u e-mailadressen van een tabel in een parameter van één @recipiënten kunt aangenoegen:
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
De resulterende @recipiënten zijn:
[email protected]; [email protected]; [email protected]
Antwoord 5, Autoriteit 2%
Om ervoor te zorgen dat de SQL-server een e-mailmelding verzendt, moet u een e-mailprofiel maken vanuit Beheer, databasemail.
1) Gebruiker Klik met de rechtermuisknop om het e-mailprofielmenu te openen en kies database-mail configureren
2)kies de eerste open (stel een database-mail in door de volgende taken te volgen) en druk op volgende
Opmerking: als de SMTP niet is geconfigureerd, raadpleeg dan de onderstaande URL
http://www.symantec.com/business/ support/index?page=content&id=TECH86263
3) in het tweede scherm vult u de profielnaam in en voegt u een SMTP-account toe, en drukt u op volgende
4) kies het type e-mailaccount (openbaar of privé) en druk op volgende
5) verander de parameters die betrekking hebben op de opties voor het verzenden van e-mail, en druk op volgende
6) druk op voltooien
Om nu SQL-server een e-mail te laten sturen als actie X is gebeurd, kunt u dat doen via trigger of taak (dit zijn de gebruikelijke manieren, niet de enige).
1) u kunt een vacature maken vanuit een SQL-serveragent, vervolgens met de rechtermuisknop op operators klikken en de e-mails controleren (vul bijvoorbeeld uw e-mailadres in) en daarna op OK klikken met de rechtermuisknop op Jobs en een nieuwe job kiezen
en vul de vereiste informatie in, evenals de stappen, naam, … enz. en selecteer op het tabblad Melding het profiel dat u hebt gemaakt.
2) van triggers, raadpleeg het onderstaande voorbeeld.
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
Antwoord 6
soms terwijl sp_send_dbmail niet direct gevonden. U kunt ‘msdb.dbo.sp_send_dbmail’ gebruiken om te proberen
(Werkt prima op Windows Server 2008 R2 en is getest)
Antwoord 7
Om e-mail via SQL Server te verzenden, moeten we een DB-mailprofiel instellen. We kunnen ofwel de T-SQl- of SQL Database-mailoptie in de SQL-server gebruiken om een profiel aan te maken. Nadat onderstaande code is gebruikt om e-mail te verzenden via een zoekopdracht of een opgeslagen procedure.
Gebruik onderstaande link om een DB-mailprofiel aan te maken
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