wake-up-neo.com

So senden Sie eine E-Mail von SQL Server

Wie kann ich eine E-Mail mit T-SQL senden, die E-Mail-Adresse wird jedoch in einer Tabelle gespeichert? Ich möchte die Tabelle durchlaufen und E-Mails senden. Ich kann bisher kein gutes Beispiel dafür finden .. 

Danke für Ihre Hilfe

47
moe

Schritt 1) ​​Profil und Konto erstellen

Sie müssen ein Profil und ein Konto mit dem Befehl Datenbank-Mail konfigurieren Wizard erstellen, auf den Sie über das Kontextmenü Datenbank-Mail konfigurieren des Knotens Datenbank-Mail im Verwaltungsknoten zugreifen können. Dieser Assistent wird zum Verwalten von Konten, Profilen und globalen Einstellungen für Database Mail verwendet.

Schritt 2) 

LAUF:

sp_CONFIGURE 'show advanced', 1
GO
RECONFIGURE
GO
sp_CONFIGURE 'Database Mail XPs', 1
GO
RECONFIGURE
GO

Schritt 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.'

Um den Tisch zu durchlaufen 

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

Hat dies auf dem folgenden Link veröffentlicht http://ms-sql-queries.blogspot.in/2012/12/wie-zu-senden-email-von-sql-server.html

67
Ruzbeh Irani

Sie können E-Mail direkt aus SQL Server mit Database Mail versenden. Dies ist ein hervorragendes Tool zum Benachrichtigen von Systemadministratoren über Fehler oder andere Datenbankereignisse. Sie können es auch verwenden, um einen Bericht oder eine E-Mail-Nachricht an einen Endbenutzer zu senden .. Die grundlegende Syntax hierfür lautet:

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]'

Vor der Verwendung muss Database Mail mit dem Database Mail-Konfigurationsassistenten oder sp_configure aktiviert werden. Möglicherweise muss eine Datenbank oder ein Exchange-Administrator bei der Konfiguration dieser Datei helfen. Siehe http://msdn.Microsoft.com/en-us/library/ms190307.aspx Und http://www.codeproject.com/Articles/485124/Configuring-Database-Mail-in-SQL-Server für weitere Informationen.

4
Salman Lone

Hier ein Beispiel, wie Sie E-Mail-Adressen aus einer Tabelle in einem einzigen @recipients-Parameter verketten können:

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

Die resultierenden @ Empfänger sind:

[email protected]; [email protected]; [email protected]

3
Lars

Damit der SQL Server eine E-Mail-Benachrichtigung senden kann, müssen Sie ein E-Mail-Profil aus der Datenbank-Management-Verwaltung erstellen.

1) Benutzer Klicken Sie mit der rechten Maustaste, um das E-Mail-Profilmenü aufzurufen, und wählen Sie Datenbank-E-Mail konfigurieren 

2) Wählen Sie das erste Öffnen aus (richten Sie eine Datenbank-Mail ein, indem Sie die folgenden Schritte ausführen) und drücken Sie Weiter. Hinweis: Wenn das SMTP nicht konfiguriert ist, finden Sie die URL unten

http://www.symantec.com/business/support/index?page=content&id=TECH86263

3) Füllen Sie im zweiten Bildschirm den Profilnamen und fügen Sie das SMTP-Konto hinzu. Drücken Sie anschließend auf Weiter

4) Wählen Sie den Typ des E-Mail-Kontos (öffentlich oder privat) und drücken Sie dann auf Weiter

5) Ändern Sie die Parameter, die sich auf die Optionen zum Senden von E-Mails beziehen, und klicken Sie auf Weiter .__) 6) Drücken Sie Fertig stellen

Um den SQL Server dazu zu bringen, eine E-Mail zu senden, falls Aktion X ausgeführt wurde, können Sie dies über einen Trigger oder einen Job tun (Dies ist die übliche Art und Weise, nicht die einzigen).

1) Sie können einen Job über den SQL Server-Agenten erstellen. Klicken Sie anschließend mit der rechten Maustaste auf Operatoren und prüfen Sie die E-Mails (füllen Sie beispielsweise Ihre E-Mail-Adresse aus). Klicken Sie anschließend auf OK. Klicken Sie anschließend mit der rechten Maustaste auf Jobs und wählen Sie den neuen Job Wählen Sie unter Von Schritten, Name, usw. und von der Registerkarte Benachrichtigung das von Ihnen erstellte Profil aus.

2) von Triggern verweisen wir auf das nachfolgende Beispiel.

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
2
Ahmad Abuhasna

Sie können dies auch mit einem Cursor tun . Wenn Sie ein Konto und ein Profil erstellt haben, z. "Profil" und ein Konto und Sie haben die Tabelle, in der die E-Mails gespeichert sind, z. "EmailMessageTable" können Sie Folgendes tun:

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

Danach müssen Sie nur noch die gespeicherte Prozedur ausführen 

EXECUTE mass_email
GO
2
pancy1

manchmal wird sp_send_dbmail nicht direkt gefunden. Sie können 'msdb.dbo.sp_send_dbmail' verwenden, um den Vorgang zu versuchen (Funktioniert gut unter Windows Server 2008 R2 und wird getestet) 

1
Marc Zeroc

Um E-Mails über SQL Server zu senden, müssen Sie ein DB-E-Mail-Profil einrichten. Zur Erstellung eines Profils können Sie entweder die SQL-Datenbankoption T-SQl oder SQL Database verwenden. Nachstehend wird Code zum Senden von E-Mails über eine Abfrage oder eine gespeicherte Prozedur verwendet.

Verwenden Sie den folgenden Link, um ein DB-Mail-Profil zu erstellen

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

0
Kamal Pratap