Slanje mailova korišćenjem Database Mail komponente
Objavljeno: 26-03-2014 | Autor: Miloš Milenković | Kategorija: Administracija, Alati, Management Studio, T-SQL
Ознаке: string functions
0
Database Mail je SQL Server komponenta koja omogućava developerima i administratorima slanje e-mail poruka iz SQL Server Database Engine-a. Primarna upotreba ove komponente bi trebalo da bude slanje raznih obaveštenja administratorima (u slučaju da dođe do neke greške, opterećenja ili zagušenja na serveru i sl.), ali se može koristiti i za slanje rezultata upita, obaveštavanje developera da se izvršio neki triger itd.
Ostvaruje se korišćenjem sistemske stored procedure sp_send_dbmail. Pre poziva stored procedure, potrebno je napraviti Database Mail nalog i profil koji se kasnije koriste za slanje maila. Oni sadrži podatke kao što su naziv mail servera i email adresa sa koje se šalje mail.
Kreiramo ih sledećim skriptom:
-- dodavanje naloga EXECUTE msdb.dbo.sysmail_add_account_sp @account_name = 'KefaloNalog', @email_address = 'DBMail@sql-kefalo.net', @display_name = 'Kefalo DBMail', @mailserver_name = 'mail.sql-kefalo.net'; -- dodavanje profila EXECUTE msdb.dbo.sysmail_add_profile_sp @profile_name = 'KefaloProfile' ; -- povezivanje naloga i profila EXECUTE msdb.dbo.sysmail_add_profileaccount_sp @profile_name = 'KefaloProfile', @account_name = 'KefaloAccount', @sequence_number = 1 ;
Da bi se slanje mailova omogućilo, osim kreiranja naloga i profila, neophodno je uključiti Database Mail komponentu.
To postižemo izvršavanjem skripta:
EXEC sp_configure 'show advanced options', 1; GO RECONFIGURE; GO EXEC sp_configure 'Database Mail XPs', 1; GO RECONFIGURE GO
Sada smo spremni da pošaljemo email. Ovo je najjednostavniji poziv pomenute stored procedure:
EXEC msdb.dbo.sp_send_dbmail @profile_name = 'KefaloProfile', @recipients = 'redakcija@sql-kefalo.net', @body = 'Zdravo Strumpfovi!', @body_format = 'HTML', @subject = 'Strumpfovski pozdrav'
Parametri koje smo iskoristili su prilično jasni:
- @profile_name je profil koji smo kreirali i koji koristimo za slanje poruke
- @recipients je lista primalaca poruke i može se navesti jedna ili više mail adresa koje odvajamo tačkom zarez
- @body je sadržaj tela email poruke
- @body_format je tip formata tela email poruke i može biti ‘HTML’ ili ‘TEXT’ (ukoliko se kao vrednost parametra stavi ‘HTML’, @body parametar može da sadrži i HTML tagove pored običnog teksta)@subject je tekst koji se prikazuje u subject liniji email poruke
Prilikom slanja email poruke mogu se proslediti brojni parametri koje nismo spomenuli, a neki od najčešće korišćenih su:
- @copy_recipients – lista primalaca koji će se naći u CC liniji email poruke
- @blind_copy_recipients – lista primalaca koji će dobiti poruku ali drugi primaoci to neće videti (BCC)
- @file_attachments – lista dokumenta koji se šalju kao prilog uz poruku (navodi se putanja dokumenta na disku)
- @importance – označava važnost poruke (može imati vrednosti: ‘low’, ‘normal’ ili ‘high’)
Na kraju, evo jednog skripta kojim se može proveriti koji su mailovi poslati sa nekog profila i koji im je status:
SELECT sent_date, recipients, subject, body, sent_status FROM msdb..sysmail_allitems sai INNER JOIN msdb..sysmail_profile sp ON sai.profile_id = sp.profile_id WHERE sp.name = 'KefaloProfile'