sestdiena, 2011. gada 26. februāris

Piemērs: DB Mail e-pastu sūtīšana

Rakstā daži piemēri, kā nosūtīt e-pastus. Papildus tam arī daži ar lietotāju tiesībām saistīti jautājumi. E-pasta sūtīšanas procedūras apraksts msdn atrodams šeit: sp_send_mail.

Piemēri e-pasta sūtīšanai (nepieminot tiesības)
Tāds pavisam vienkārš piemērs, lai sūtītu e-pastu. Izmantoju rakstā Konta un profila izveide e-pastu sūtīšanai (DB Mail) izveidoto profilu:
EXEC msdb.dbo.sp_send_dbmail
    @profile_name='MyTestProfile',
    @recipients='my_mail@my_domain.lv',
    @subject='Testa ziņa',
    @body= 'Ja saņem, tad viss strādā '
Bet, ņemot vērā, ka profils tika uzstādīts kā noklusētais, var nenorādīt profila nosaukumu! Arī šādi tas strādā (nomainot noklusēto publisko profilu uz citu noklusēto publisko profilu, tiks izmantots tas):
EXEC msdb.dbo.sp_send_dbmail
    @recipients='my_mail@my_domain.lv',
    @subject='Testa ziņa',
    @body= 'Ja saņem, tad viss strādā '
Ja ir vēlme nosūtīt e-pastu ar kāda vaicājuma rezultātiem (šajā gadījumā rezultāti tiek iekļauti e-pastā "body" daļā. Bet tikpat labi var sākumā būt paskaidrojošais teksts- līdzīgi kā iepriekš norādot @body parametru):
EXEC msdb.dbo.sp_send_dbmail
    @recipients = 'my_mail@my_domain.lv',
    @query = 'select top 10 * from TestTable',
    @subject = '10 rindas'
Vaicājuma rezultātus var sūtīt arī kā pielikumu (ir iespējams norādīt faila vārdu, kolonnu atdalītāju):
EXEC msdb.dbo.sp_send_dbmail
    @recipients = 'my_mail@my_domain.lv',
    @query = 'select top 10 * from TestTable',
    @subject = '10 rindas',
    @body = 'pielikumā rezultāti',
    @attach_query_result_as_file = 1
Un tad vēl pēdējais piemērs- e-pasta nosūtīšana un pielikumā 2 faili un vaicājum rezultāti ar definētu nosaukumu. Vēstulei uzlikta augsta prioritāte:
EXEC msdb.dbo.sp_send_dbmail
    @recipients = 'my_mail@my_domain.lv',
    @query = 'select top 10 * from TestTable',
    @query_attachment_filename = 'VaicajumaRezultati.txt',
    @query_result_separator = ';',
    @subject = '10 rindas',
    @importance = 'High',
    @file_attachments = '\\Serveris\Mape\fails1.txt;'\\Serveris\Mape\fails2.txt',
    @body='Pielikumā divi norādītie faili, kā arī vaicājuma rezultāti',
    @attach_query_result_as_file = 1;
Un par lietotāju tiesībām
Manā gadījumā- vēlos panākt, lai visi lietotāji varētu nosūtīt e-pastu. Viens variants kā to darīt- ir lietotājus pielikt msdb datu bāzei un pielikt lietotājus lomai "DatabaseMailUserRole", tādā veidā nodrošinot piekļuvi izveidotajam(iem) publiskajam(iem) profiliem. Vai arī pieliekot lomai un katram lietotājam nodrošinot piekļuvi konkrētam(iem) privātajam(iem) profilam(iem).

Var izmantot parakstītas procedūras: DB Mail: Lietotāja tiesības izmantojot sertifikātus

Vēl viena alternatīva būtu datu bāzei msdb atļaut "guest" lietotāja kontu. Šim kontam piešķirt lomu "DatabaseMailUserRole". tādā veidā visi lietotāji, kas nav speciāli pielikti šai datu bāzei, tiks uztverti kā "Guest" lietotāji.
"Guest" lietotājam jābūt atļaujai pieslēgties datu bāzei (pēc noklusējuma jābūt atļautam):
use msdb
--atļaut lietotāju guest
GRANT CONNECT TO GUEST
Lai atļautu "Guest" lietotājam sūtīt e-pastu:
USE [msdb]
-- lai pieliktu tiesības sūtīt e-pastu:
EXEC sp_addrolemember N'DatabaseMailUserRole', N'guest'
-- lai noņemtu tiesības sūtīt e-pastu:
--EXEC sp_droprolemember N'DatabaseMailUserRole', N'guest'

Nav komentāru:

Ierakstīt komentāru