Одним из возможных решений является инкапсуляция почтового сообщения в виде хранимой процедуры, например. mail_error_as_MAILER (который вы позже позвоните)
и еще одна хранимая процедура
например,
ALTER PROCEDURE [dbo].[mail_error](@error_ID int)
SET NOCOUNT ON
declare @rc int
declare @object int
declare @src varchar(255)
declare @desc varchar(255)
declare @osql_cmd varchar(1000)
-- create shell object
exec @rc = sp_oacreate 'wscript.shell', @object out
if @rc0
begin
exec sp_oageterrorinfo @object, @src out, @desc out
return
END
DECLARE @user VARCHAR(50)
DECLARE @password VARCHAR(50)
DECLARE @database VARCHAR(50)
DECLARE @server VARCHAR(50)
DECLARE @sql varchar(200)
SET @user=MAILER,@password=XXXXXX,@database=XXXXXX,@server=XXXXX
SET @sql= 'EXEC mail_ERROR_as_MAILER @error_ID=' + CAST(@error_id as varchar(10))
set @osql_cmd='osql -U'+@user+' -P'+@password+' -d'+@database+' -S"'+@server+'" -Q"'
+@sql+'"'
exec @rc= sp_oamethod @object, 'run', null, @osql_cmd
--print @rc
if @rc0
begin
exec sp_oageterrorinfo @object, @src out, @desc out
return
end
-- destroy shell object
exec sp_oadestroy @object
Но для этого необходимо:
* жесткий пароль (убедитесь, что пользователи не могут просматривать определение хранимой процедуры ...)
* предоставление пользователям доступа к sp_oacreate и т. д. (открывает другие проблемы с безопасностью, например, DOS)
таким образом, они могут использовать почту только так, как вы хотите, не давая им разрешения на рассылку других вещей.
или безопаснее,
разрешить пользователям помещать почту в какой-то тип mail_queue (который вы можете контролировать, что они могут помещать) и иметь учетную запись агента, периодически отправляющую эти письма
Или: дайте им разрешение на почту, но возьмите большой клуб с ржавыми шипами от оскорблений