В CRM Terrasoft есть функции отправки писем через Outlook, но их неудобно использовать для рассылок по расписанию, т.к. это требует постоянно запущенного клиента Terrasoft.
Для решения этой задачи можно использовать встроенную функцию sp_send_dbmail MS SQL Server.
Включение процедуры посредством запроса в MS SQL Management Studio:
GO
RECONFIGURE
GO
sp_CONFIGURE 'Database Mail XPs', 1
GO
RECONFIGURE
GO
Настроить учетку и профиль для отправки почты в том же MS SQL Management Studio: Management - Database Mail - Configure Database Mail.
Настройка безопасности профиля (почти ничего не меняем):
Отправляем тестовое сообщение для проверки настроек. Необходимо учитывать, что служба Database Mail работает далеко не со всеми почтовыми серверами.
Теперь можно создать Job для отправки информационных писем по расписанию с помощью SQL Server Agent. В SQL-скрипт вставляем функцию 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 взята из блога Террасофт Александра Свистунова.