Как отправить электронное письмо нескольким получателям?

#sql-server #email #stored-procedures

#sql-сервер #Адрес электронной почты #хранимые процедуры

Вопрос:

У меня есть хранимая процедура, которая отправляла электронные письма нескольким получателям. В этом я хочу отправить двум разным получателям, используя @copy_recipients. Но я получаю синтаксическую ошибку. Как заставить это работать?

код хранимой процедуры

 EXEC msdb.dbo.sp_send_dbmail
    @profile_name = 'mail', 
    @recipients = @Mail1,
    @copy_recipients = @Mail2;@Mail3, 
    @body =@body ,
    @subject =@subject 
  

Комментарии:

1. @Mail2;@Mail3 — правильная концепция, плохая реализация. ; , будучи не в строке, завершает инструкцию SQL, что приводит к недопустимому синтаксису.

Ответ №1:

Вам нужно добавить ; (точку с запятой) между адресами электронной почты, используя конкатенацию строк:

 DECLARE @copy_to varchar(max)= @Mail2 ';' @Mail3

EXEC msdb.dbo.sp_send_dbmail
    @profile_name = 'mail', 
    @recipients = @Mail1,
    @copy_recipients = @copy_to, 
    @body =@body ,
    @subject =@subject 
  

Вы можете прочитать статью MSDN здесь

[ @recipients= ] ‘получатели’

Это разделенный точкой с запятой список адресов электронной почты для отправки сообщения. Список получателей имеет тип varchar (максимум). Хотя этот параметр необязателен, должен быть указан хотя бы один из @recipients, @copy_recipients или @blind_copy_recipients, иначе sp_send_dbmail вернет ошибку.

[ @copy_recipients= ] ‘copy_recipients’

Это разделенный точкой с запятой список адресов электронной почты, на которые нужно скопировать сообщение. Список получателей копии имеет тип varchar (максимум). Хотя этот параметр необязателен, должен быть указан хотя бы один из @recipients, @copy_recipients или @blind_copy_recipients, иначе sp_send_dbmail вернет ошибку.

Комментарии:

1. С удовольствием! 😉