Wysyłanie maili ze skryptów SQL nie jest już tak uciążliwe, jak w przypadku SQL Server 7.0 i 2000. Microsoft SQL 2005 i 2008 wspiera teraz SMTP a funkcja ta nazywa się Database Mail.
Poniżej proces krok po kroku jak skonfigurować Database Mail.
Włączenie komponentu Database Mail
Przed konfiguracją profili i kont na serwerze należy włączyć Database Mail. Można to zrobić albo skryptem:
use master
go
sp_configure 'show advanced options',1
go
reconfigure with override
go
sp_configure 'Database Mail XPs',1
go
reconfigure
go
lub w SQL Server Surface Area Configuration:
Konfiguracja konta pocztowego
Następnie konfigurujemy konto pocztowe. W przykładzie poniżej dodane zostanie konto poniżej o nazwie Konto Testowe używające adresu e-mail jt@domain.com na serwerze smtp.domain.net.
Ustawienie zmiennej @username wartości NULL oznacza, że serwer SMTP nie wymaga autoryzacji.
execute msdb.dbo.sysmail_add_account_sp
@account_name = 'KontoTestowe',
@description = 'Mail account for testing',
@email_address = 'jt@domain.com',
@display_name = 'Jan Testowy',
@username=NULL,
@mailserver_name = 'smtp.domain.net'
go
Konfiguracja profilu
Dodatkowym składnikiem do konfiguracji jest Database Mail Profile. Profil może być publiczny wtedy wszyscy członkowie DatabaseMailUserRole z bazy MSDB będą mogli wysłać wiadomości.
execute msdb.dbo.sysmail_add_profile_sp
@profile_name = 'ProfilTestowy',
@description = 'My Profile'
go
Połączenie konta z profilem
Konto z profilem łączymy poniższym poleceniem:
execute msdb.dbo.sysmail_add_profileaccount_sp
@profile_name = 'ProfilTestowy
',
@account_name = 'KontoTestowe
',
@sequence_number = 1
go
Ustawienie profilu domyślnego
Procedura sysmail_add_principalprofile zezwala użytkownikom na korzystanie z profilu Database Mail oraz czyni go domyślnym.
execute msdb.dbo.sysmail_add_principalprofile_sp
@profile_name = 'ADA',
@principal_name = 'public',
@is_default = 1 ;
go
Wysłanie maila
Wysłanie maila testowego ze skryptu SQL:
exec msdb.dbo.sp_send_dbmail
@recipients='xxx@xxx.pl',
@subject = 'Test',
@body = 'Pierwszy mail z SQL.',
@body_format = 'HTML'
go
Gdy system wyświetli informację „Mail queued.” powinniśmy spodziewać się go wkrótce w skrzynce odbiorczej.
Jeśli otrzymaliśmy komunikat błędu lub wiadomość nie doszła sprawdzamy literówki w ustawieniach konta przez SQL Management Studio.
Następnie dobrze jest sprawdzić, czy program antywirusowy nie blokuje wysyłania e-maili (np. McAfee ma to domyślnie włączone).
Dodatkowo można dostać trochę bardziej szczegółowe informacje wydając polecenie:
select * from msdb.dbo.sysmail_event_log
Na koniec
Procedura sp_send_dbmail umożliwia wysyłanie e-maili z wielu profili skonfigurowanych na serwerze SQL i nie brakuje jej właściwie niczego do przygotowania wiadomości zgodnej z oczekiwaniami dlatego polecam poczytanie na jej temat wszystkim planującym w zaawansowany sposób mailować z serwera SQL.
Komentarz