core.PrepareEmailToSend
Podsumowanie:Procedura składowana core.PrepareEmailToSend dodaje do tabeli core.Emails rekord z parametrami wiadomości do wysłania. Procedury można używać w akcji SQL do systemowej bazy danych.
Procedura ma następujące parametry:
-
SenderEmail: (wymagany) adres nadawcy; musi mieć wartość skonfigurowaną w ustawieniach systemu (
Email
>Nazwa użytkownika powiązana z poświadczeniami
lubExchange - Konto użytkownika
). - ToEmails: (wymagany) adresy odbiorców, w przypadku kilku należy je rozdzielic średnikami (;).
- CcEmails: (opcjonalny) adresy „do wiadomości”.
- BccEmails: (opcjonalny) adresy „ukryte do wiadomości”.
- Title: (obowiązkowy) temat wiadomości.
- Body: (obowiązkowy) treść wiadomości.
Przykład wywołania:
EXEC core.PrepareEmailToSend
@SenderEmail = 'default_sender@company.com'
,@ToEmails = 'receipient@company.com'
,@CcEmails = ''
,@BccEmails = ''
,@Title = 'message subject'
,@Body = 'message body'
Standardowo procedura dodaje jeden rekord, czyli jedną wiadomość e-mail. Aby dodać kilka rekordów, należy przygotować dane źródłowe i użyć procedury w pętli albo z kursorem. Poniżej przedstawiono przykład użycia procedury w pętli.
-- deklaracja zmiennych do procedury:
DECLARE @CurrentId int, @CurrentTitle varchar(255), @CurrentPrice decimal(10,2), @CurrentBody nvarchar(max);
-- deklaracja zmiennej tabelarycznej do zasielnia - dane źródłowe
DECLARE @EmailSourceData TABLE (
[Id] int,
[Name] varchar(255),
[Price] decimal(10,2)
);
-- zasilenie zmiennej tabelarycznej
INSERT INTO @EmailSourceData ([Id], [Name], [Price]) VALUES (11, 'GNSS Receiver 11', 511);
INSERT INTO @EmailSourceData ([Id], [Name], [Price]) VALUES (22, 'GNSS Receiver 22', 522);
INSERT INTO @EmailSourceData ([Id], [Name], [Price]) VALUES (33, 'GNSS Receiver 33', 533);
-- deklaracja zmiennych do obsługi pętli: licznik i iterator
DECLARE @RowCount INT = (SELECT COUNT(*) FROM @EmailSourceData);
DECLARE @Counter INT = 1;
-- start pętli
WHILE @Counter <= @RowCount
BEGIN
-- obliczenie danych dla bieżącego rekordu
SELECT
@CurrentId = [Id]
,@CurrentTitle = [Name]
,@CurrentPrice = [Price]
FROM (
SELECT [Id], [Name], [Price], ROW_NUMBER() OVER (ORDER BY Id) AS RowNum
FROM @EmailSourceData
) AS Subquery
WHERE RowNum = @Counter;
SET @CurrentBody = concat(@CurrentId, ' | ', @CurrentTitle, ' | ', @CurrentPrice);
-- wywołanie procedury
EXEC core.PrepareEmailToSend
@SenderEmail = 'system@naxiom.com',
@ToEmails = 'jmucha@naxiom.com',
@CcEmails = '',
@BccEmails = '',
@Title = @CurrentTitle,
@Body = @CurrentBody;
-- przeliczenie iteratora
SET @Counter = @Counter + 1;
END;
Powiązane tematy: