отправка mail средствами mssql

Коллеги, приветствую.
Подскажите существует ли решение - необходимо отправить email средствами mssql ?
Встроенный клиент увы не устраивает.
Собственно суть такова - на веб-форме регистрирую, предпположим, инцендент.
необходимо уведомить в фоновом режиме ответственного об этом событии.
почтовый клиент, в этом случае не устроет никак.

з.ы. можно пример небольшой. т.к. пока я в этом 0.00

собственно вот что у меня есть к этому времени:

var SQLText = 'exec @res= msdb.dbo.sp_send_dbmail :Parameters';

var Parameters = System.CreateObject('TSObjectLibrary.Parameters');
AddParameter(Parameters,    'ParamProfile', pdtUnicodeString, 'test');
AddParameter(Parameters, 'ParamRecipients', pdtUnicodeString, 'xxx@xxx.ru');
AddParameter(Parameters,    'ParamSubject', pdtUnicodeString, 'Subject');
AddParameter(Parameters,       'ParamBody', pdtUnicodeString, 'Body');

Connector.DBEngine.ExecuteCustomSQL(SQLText, Parameters);

- но, не работает зараза...

Нравится

5 комментариев

Здравствуйте,
Приведу пока меленький пример на вызов хранимой процедуры

Подключаем скрипт scr_DB

var Parameters = CreateSPParameters();
CreateSPParameter(Parameters, 'AccountName', pdtString, vAccountNameBP);
CreateSPParameter(Parameters, 'AccountStateID', pdtString, vAccountStateIDBP);
CreateSPParameter(Parameters, 'AccountCityID', pdtString, vAccountCityIDBP); 
CreateSPParameter(Parameters, 'AccountPhone', pdtString, vAccountPhoneBP);
 
CreateSPParameter(Parameters, 'OutTest', pdtInteger, 0); //исходящий параметр
Parameters.ItemsByName('OutTest').ParamType = 1; 
 
var SQLText = 
'exec dbo.tsp_check_name_reg_city_phone :AccountName, :AccountStateID, :AccountCityID,:AccountPhone,:OutTest OUTPUT';
Connector.DBEngine.ExecuteCustomSQL(SQLText, Parameters);
 
var res = Parameters.ItemsByName('OutTest').ValAsInt;

vAccountNameBP,vAccountStateIDBP,vAccountCityIDBP,vAccountPhoneBP здесь переменные с данными.

Попробуйте переписать сам вызов var SQLText = 'exec @res= msdb.dbo.sp_send_dbmail :Parameters';
установив четко параметры, как в моем примере

>>Приведу пока меленький пример на вызов хранимой процедуры

непомогло... пойду копать настройки на sql-серваке (

Перед началом работы с процедурой sp_send_dbmail вам необходимо установить компонент Database Mail и настроить учетную запись.
При вызове процедуры наверно лучше использовать именованные параметры.
msdb.dbo.sp_send_dbmail
@profile_name = 'MailTest',
@recipients = 'test@mydomain.ru',
@subject = 'Test Mail';

И делать это можно на стороне сервера, например в триггере.

>> Перед началом работы с процедурой sp_send_dbmail вам необходимо установить компонент Database Mail и настроить учетную запись.
а можно поподробнее ? я потом отпишусь пошагово, что да как делал - такой небольшой FAQ.
что то в этом плане http://blog.chertenok.ru/2010/04/sql-email-notifice/

>> И делать это можно на стороне сервера, например в триггере.
это понятно, но разве это есть хороший тон ? хотелось бы сделать все в конфигураторе, пусть и с лишними трудозатратами.

з.ы. вот еще вопрос - где то читал что нужно давать гранты на sp_send_dbmail. это так ?

Так в этом блоге есть вся нужная инфа по настройке компонента.

Касательно отправки через триггер.
Вы писали что "необходимо уведомить в фоновом режиме ответственного об этом событии ..."

Если же ва нужно отправлять с рабочего места, то тогда зачем использовать серверную отправку? Используйте или оутлук или еще что-то :wink:

Показать все комментарии