Wysyłanie maili z SQL 2005 jest proste

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:

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.

Configure Database Mail

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.

Nie ma jeszcze żadnych komentarzy.

O mnie

Dobromir Chodkowski

Jestem informatykiem z zawodu oraz z zamiłowania, pasjonatem fotografii i szczęśliwym facetem swojej dziewczyny.

Nieraz udaje mi się znaleźć czas w napiętym grafiku dnia i wtedy dzielę się z Wami swoją wiedzą informatyczną.

O aVarii

Znajdziesz tu porady komputerowe, sztuczki oraz rozwiązania z dziedziny IT i tematów pokrewnych.

Jeśli interesuje Cie jakiś temat, skontaktuj się ze mną, a postaram się znaleźć czas, aby interesujące Cię kwestie opisać i wytłumaczyć.