2011-02-04 4 views
1

Уважаемые все, Я использую SQL Server 2008.SQL почты ------ DATABASE MAIL

Я столкнулся сценарий, в котором я должен отправить почту на одного или нескольких пользователей в зависимости от запроса. Я попробовал эту stmt для отправки почты нескольким получателям

EXEC msdb.dbo.sp_send_dbmail 
@profile_name = 'imran' , 
@recipients= '[email protected];[email protected]', 
@subject = 'Test mail' 

Он успешно отправил почту.

Теперь я хочу отправить почту в зависимости от запроса. С одним сотрудником это не проблема, но если это больше, чем один сотрудник, как я могу отправлять письма нескольким получателям.

Это мой вопрос в этом sp для отправки нескольких получателей, которые нужно разделить адресами с ;. Как я могу организовать адресатов так, чтобы между ними находился ;.

спасибо.

+1

ли фактические адреса электронной почты этих людей? Если они есть, удалите их или анонимно. –

ответ

0

Используйте функцию, как это -

CREATE FUNCTION coltocsv 
(
    --your input parameters 
) 
RETURNS nvarchar(3000) 
AS 
BEGIN 
     -- Declare the return variable here 
declare @keywords nvarchar(3000) 

--Build your csv string of keywords 
Select @keywords = null 
SELECT @Keywords = Coalesce(@Keywords + '; ', '') + 
ColumnName 
from Table 
where <some condition> 

--- Return the result of the function 
     RETURN @keywords 
END 
2

К сожалению, вы не давая нам много идти дальше - вы не показываете нам запрос, чтобы выбрать ваши сотрудник, вы не говорите нам что-нибудь о том, что выглядит таблица Employee, поэтому все, что мы можем сделать, это угадать - в лучшем случае.

Итак, вот моя догадка: вы хотите как-то выбрать нескольких сотрудников, а их адреса электронной почты должны быть объединены вместе, разделенные точкой с запятой (;), а затем использованы для вашего вызова sp_send_dbmail.

Один из способов сделать это может быть такой:

DECLARE @recipients VARCHAR(4000) 

SELECT 
    @recipients = STUFF((SELECT ';' + EMail 
         FROM dbo.Employees 
         WHERE (some condition here to find the right employees) 
         FOR XML PATH('') 
         ), 1, 1, '') 

EXEC msdb.dbo.sp_send_dbmail 
     @profile_name = 'imran', 
     @recipients, 
     @subject = 'Test mail'