Грешката е тук, където имате много редове, които се опитват да бъдат присвоени на една променлива
SET @Recipients =(SELECT DISTINCT a.EMail
FROM a
--approximately 600 email addresses
По този начин ще трябва да го промените на отделен списък
SET @Recipients = STUFF(
(select DISTINCT ';' + CAST(a.EMail AS varchar(max))
FROM a FOR XML PATH ('')
)
,1,1, '')
Забележка:@Recipients ще трябва да бъде varchar(max)