Een e-mail verzenden vanaf SQL Server?

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<[email protected]_id
BEGIN
    SELECT @email_id=email_id 
    FROM [email_adresses]
    set @query='sp_send_dbmail @profile_name=''yourprofilename'',
                        @recipients='''[email protected]_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

Other episodes