2013-11-26 2 views
1

Я довольно новичок в этом вопросе, мне нужно запросить таблицу и использовать результаты, чтобы заполнить список СС для сообщения электронной почты. Я не могу найти ничего, что показывает пример этого. Для выполнения этой задачи я использую Job на SQL-сервере. Отправка одному получателю и одному получателю CC отлично работает, но мне нужно отправить несколько CC. Любые советы были бы очень оценены.sp_send_dbmail (T-SQL)

Вот мой код, который отправляет по электронной почте одному получателю:

declare  @chvFirstName nvarchar(100), 
@chvLastName nvarchar(100), 
@chvEArea nvarchar(5), 
@chvAppDate nvarchar(20), 
@chvExpDate nvarchar(20), 
@chvEmail varchar(50), 
@chvEmailMessage varchar(800) 

declare @CrsrVar Cursor 

Set @CrsrVar = Cursor For 
Select App.dbo.CommitteeAPC.AppointDate, App.dbo.CommitteeAPC.ExpiryDate, App.dbo.CommitteeAPC.ElectoralArea, App.dbo.CommitteeMemberContact.FirstName, App.dbo.CommitteeMemberContact.LastName, App.dbo.CommitteeAPC.StaffEmail 
From RDOS_App.dbo.CommitteeAPC INNER JOIN App.dbo.CommitteeMemberContact ON App.dbo.CommitteeAPC.MemberID = App.dbo.CommitteeMemberContact.MemberID 
Where CurrentDate > NotifDt 

Open @CrsrVar 

Fetch Next From @CrsrVar 
Into @chvAppDate, @chvExpDate, @chvEArea, @chvFirstName, @chvLastName, @chvEmail 

While(@@FETCH_STATUS = 0) 

Begin 

set @chvEmailMessage = 'DO NOT REPLY TO THIS MESSAGE! This is an automatic e-mail notification ' + 
    'message sent to you from the Committees Database.' + 
    CHAR(13) + CHAR(10)+ 
    CHAR(13) + CHAR(10)+ 
    'The following APC membership will expire in approximately 30 days.' + 
    CHAR(13) + CHAR(10)+ 
    CHAR(13) + CHAR(10)+ 
    'Name: ' + @chvFirstName + ' ' + @chvLastName + 
    CHAR(13) + CHAR(10)+ 
    CHAR(13) + CHAR(10)+ 
    'Area: ' + @chvEArea + ' Advisory Planning Commission' + 
    CHAR(13) + CHAR(10)+ 
    'Date Appointed: ' + @chvAppDate + 
    CHAR(13) + CHAR(10)+ 
    'Date of Expiry: ' + @chvExpDate 

--Use Master 

Exec msdb.dbo.sp_send_dbmail 
@profile_name = 'App Database Mail Profile', 
@recipients = @chvEmail, 
@subject = 'An APC Membership will expire within 30 days', 
@body = @chvEmailMessage 

Fetch Next From @CrsrVar 
Into @chvAppDate, @chvExpDate, @chvEArea, @chvFirstName, @chvLastName, @chvEmail 

End 

Close @CrsrVar 
Deallocate @CrsrVar 
+0

Вам нужно передать значение 'varchar' с'; 'в качестве разделителя. что содержит '@ chvEmail'? Все, что вам нужно сделать, это разобрать его в правильном формате. –

ответ

2

Вы можете объединить несколько получателей в @chvEmail. Отделите их полуколонами.

SET @chvEmail = '[email protected]; [email protected]' 

sp_send_dbmail просто передает строку @recipients к MX, как есть, без проверки.

Если у вас есть таблица адресов электронной почты, вы можете объединить их все в одну строку с:

DECLARE @email_to varchar(max); 
SELECT @email_to = COALESCE(@email_to + ';', '') + [email] FROM [email_addresses] 
0

Ответ зависит от:

  1. Если Вы хотите отправить одно письмо всем людям - Вы можете увидеть ответы 1

  2. Если Вы используете для отправки КОНКРЕТНЫЕ письмо (@chvAppDate, @chvExpDate, @chvEArea, например, может изменяться от одного пользователя к другому) увидеть мой ответ :)

    declare @chvFirstName nvarchar(100), 
    @chvLastName nvarchar(100), 
    @chvEArea nvarchar(5), 
    @chvAppDate nvarchar(20), 
    @chvExpDate nvarchar(20), 
    @chvEmail varchar(256), 
    @chvEmailMessage nvarchar(800) 
    
    declare CrsrVar Cursor FAST_FORWARD For 
    Select APC.AppointDate, APC.ExpiryDate, APC.ElectoralArea, CMC.FirstName, CMC.LastName, APC.StaffEmail 
    From RDOS_App.dbo.CommitteeAPC APC 
    JOIN App.dbo.CommitteeMemberContact CMC ON APC.MemberID = CMC.MemberID 
    Where CurrentDate > NotifDt 
    
    Open CrsrVar 
    
    Fetch Next From CrsrVar 
    Into @chvAppDate, @chvExpDate, @chvEArea, @chvFirstName, @chvLastName, @chvEmail 
    
    While(@@FETCH_STATUS = 0) 
    
    Begin 
    select @chvEmailMessage = 'DO NOT REPLY TO THIS MESSAGE! '+ 
    'This is an automatic e-mail notification message sent to you from the Committees Database.' + CHAR(10) + CHAR(10)+ 
    'The following APC membership will expire in approximately 30 days.' + CHAR(10) + CHAR(10)+ 
    'Name: ' + COALESCE(@chvFirstName+' ','') + isnull(@chvLastName,'') + CHAR(10) + CHAR(10)+ 
    COALESCE('Area: ' + @chvEArea + ' Advisory Planning Commission' + CHAR(10),'') + 
    'Date Appointed: ' + isnull(@chvAppDate,'') + CHAR(10)+ 
    'Date of Expiry: ' + isnull(@chvExpDate,'') 
    
    --Use Master 
    
    Exec msdb.dbo.sp_send_dbmail 
           @profile_name = 'App Database Mail Profile', 
           @recipients = @chvEmail, 
           @subject = 'An APC Membership will expire within 30 days', 
           @body = @chvEmailMessage 
    
    Fetch Next From CrsrVar 
    Into @chvAppDate, @chvExpDate, @chvEArea, @chvFirstName, @chvLastName, @chvEmail 
    
    End 
    
    Close CrsrVar 
    Deallocate CrsrVar 
    

Добро пожаловать по любому вопросу

Смежные вопросы