Avatar billede Webnoob Juniormester
22. april 2017 - 10:41 Der er 4 kommentarer

sende en mail

Jeg har en database med medlemmer af en forening. Hvordan får jeg databasen til at sende en mail når et eller flere af medlemmerne har fødselsdag om fx 7 dage? Er det Stored Procedure, trigger eller en anden funktion?
Jeg behøver ikke en færdig klar løsning, men et skub i den rigtige retning, til en guide eller andet.
Avatar billede terry Ekspert
22. april 2017 - 10:54 #1
Never tried this myself and I'm sure it could be done in a number of ways.

https://www.codeproject.com/tips/846204/how-to-send-mail-using-sql-server-part
Avatar billede Webnoob Juniormester
23. april 2017 - 20:34 #2
Jeg fået lavet denne her Query, men synes ikke helt det er godt nok, har bare svært ved at komme videre.

EXEC msdb.dbo.sp_send_dbmail 
    @profile_name = 'DBMail', 
    @recipients = 'modtager', 
    @query = 'SELECT [nFornavn], [nMellemnavn], [nEfternavn] FROM [tabel].[dbo].[Medlemmer] WHERE DAY([Fodselsdag]) = DAY(GETDATE()+7) AND MONTH([Fodselsdag]) = MONTH(GETDATE())', 
    @subject = 'Fødselsdag(e)'


Det modtager jeg denne mail af og det synes jeg ikke ser vildt godt ud.

nFornavn                                                                                                                                                                                                                                                       
nMellemnavn                                                                                                                                                                                                                                                   
  nEfternavn                                                                                                                                                                                                                                                   
 
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--
John                                                                                                                                                                                                                                                           
                                                                                                                                                                                                                                                         
  Doe                                                                                                                                                                                                                                                 
 

(1 rows affected)

Hvordan retter jeg det til så det ser pænt ud og ikke ligner et Query output?
Avatar billede Webnoob Juniormester
24. april 2017 - 19:56 #3
DECLARE @Recipient varchar(MAX),
SET @Recipient = 'SELECT Email FROM [Testtable].[dbo].[Medlemmer] WHERE Rolle = "data"'
EXEC msdb.dbo.sp_send_dbmail
    @profile_name = 'DBMail', 
    @recipients = '@Recipient', 
    @query = 'SELECT [nFornavn], [nMellemnavn], [nEfternavn] FROM [Testtable].[dbo].[Medlemmer] WHERE DAY([Fodselsdag]) = DAY(GETDATE()+7) AND MONTH([Fodselsdag]) = MONTH(GETDATE())' , 
    @subject = 'Fødselar(e)',
    @Body = ''

Det går ikke vanvittig godt, har prøvet lidt forskelligt. Jeg prøver her at finde en mail adresse fra min table som jeg vil sende en mail til, men det virker ikke.
Avatar billede Webnoob Juniormester
13. maj 2017 - 23:02 #4
Her er mit foreløbige udkast, der er dog en ting jeg ikke kan finde ud af.
Jeg har min dato fra min database og jeg har den dato jeg vil sammenligne med, hvordan udregner jeg år?


DECLARE @modtager varchar(MAX)
DECLARE @bodydata1 varchar(MAX)
DECLARE @bodydata2 varchar(MAX)
DECLARE @bodydata3 varchar(MAX)
DECLARE @bodydata4 date
DECLARE @BodyText varchar(MAX)

SET @modtager = (SELECT Email FROM [Test].[dbo].[Medlemmer] WHERE Rolle = 'Formand')
SET @bodydata1 = (SELECT nFornavn FROM [Test].[dbo].[Medlemmer] WHERE DAY([Fodselsdag]) = DAY(GETDATE()+1) AND MONTH([Fodselsdag]) = MONTH(GETDATE()))
SET @bodydata2 = (SELECT nMellemnavn FROM [Test].[dbo].[Medlemmer] WHERE DAY([Fodselsdag]) = DAY(GETDATE()+1) AND MONTH([Fodselsdag]) = MONTH(GETDATE()))
SET @bodydata3 = (SELECT nEfternavn FROM [Test].[dbo].[Medlemmer] WHERE DAY([Fodselsdag]) = DAY(GETDATE()+1) AND MONTH([Fodselsdag]) = MONTH(GETDATE()))
SET @bodydata4 = (SELECT fodselsdag FROM [Test].[dbo].[Medlemmer] WHERE DAY([Fodselsdag]) = DAY(GETDATE()+1) AND MONTH([Fodselsdag]) = MONTH(GETDATE()))
SET @BodyText = 'Hej Kassér'+ CHAR(13)+CHAR(10) ++ CHAR(13)+CHAR(10) +
                'Så er det igen tid til at sende en fødselsdagshilsen.'+ CHAR(13)+CHAR(10) +
                'Denne gang er det '+ @bodydata1 +' '+ @bodydata2 +' '+ @bodydata3 +N' der har fødselsdag d. '+ CONVERT(varchar(MAX), @bodydata4, 105) +', '+ @bodydata1 + N' bliver [antal]år.'+ CHAR(13)+CHAR(10) +
                N'Send '+ @bodydata1 +' en hilsen.'+ CHAR(13)+CHAR(10) ++ CHAR(13)+CHAR(10) ++ CHAR(13)+CHAR(10) +
                'Med venlig hilsen'+ CHAR(13)+CHAR(10) ++ CHAR(13)+CHAR(10) +
                'formanden'

IF EXISTS (SELECT fodselsdag FROM [Test].[dbo].[Medlemmer] WHERE DAY([Fodselsdag]) = DAY(GETDATE()+1) AND MONTH([Fodselsdag]) = MONTH(GETDATE()))
    EXEC msdb.dbo.sp_send_dbmail
        @profile_name = 'DBMail',
        @body_format = 'TEXT',
        @recipients = @modtager,
        @subject = N'Fødselar',
        @Body = @BodyText
ELSE
    PRINT GETDATE()
GO
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester