Watch Dog в CRM Terrasoft — отправка информационных писем средствами MS SQL Server

В CRM Terrasoft есть функции отправки писем через Outlook, но их неудобно использовать для рассылок по расписанию, т.к. это требует постоянно запущенного клиента Terrasoft.

Для решения этой задачи можно использовать встроенную функцию sp_send_dbmail MS SQL Server.

Включение процедуры посредством запроса в MS SQL Management Studio:

sp_CONFIGURE 'show advanced', 1
GO
RECONFIGURE
GO
sp_CONFIGURE 'Database Mail XPs', 1
GO
RECONFIGURE
GO

Настроить учетку и профиль для отправки почты в том же MS SQL Management Studio: Management - Database Mail - Configure Database Mail.
database mail account

database mail profile

Настройка безопасности профиля (почти ничего не меняем):
database mail profile security

Отправляем тестовое сообщение для проверки настроек. Необходимо учитывать, что служба Database Mail работает далеко не со всеми почтовыми серверами.

Теперь можно создать Job для отправки информационных писем по расписанию с помощью SQL Server Agent. В SQL-скрипт вставляем функцию sp_send_dbmail.

Пример:

EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'Watch dog',
@recipients = @EmailHead,
@body = @BodyMessage,
@body_format = 'TEXT',
@subject = 'Уведомление о необработанных сообщениях в Террасофт';

Здесь
'Watch dog' - название профиля, созданного на предыдущем шаге
@EmailHead, @BodyMessage - переменные типа "строка", с помощью которых передаются результаты SQL-запросов.

С помощью конструкции CURSOR можно отсылать не только одиночные письма, но и делать рассылки (проходить циклом по таблице адресов электронной почты). Например, отправлять контрольные письма-уведомления по невыполненным задачам для всех сотрудников или делать рассылки по контрагентам. Последний пример может быть наиболее актуальным, так как штатное средство рассылки Terrasoft через Outlook весьма медленное.

Идея использования Database Mail взята из блога Террасофт Александра Свистунова.

Добавить комментарий

Ваш адрес email не будет опубликован.

Confirm that you are not a bot - select a man with raised hand: