Настройка SQL Server для отправки email писем
Описание
В этой статье будет разобран один из способов настройки SQL Server для отправки email уведомление. Для этого нам понадобятся следующие "компоненты":
- SQL Server
 - Microsoft SQL Server Management Studio
 - Доступ к SQL серверу с ролью администратора
 - SMTP сервер
 - Данные для подключения к SMTP серверу
 
Если у вас возникли проблемы на каких-либо этапах, обратитесь за помощью к вашим специалистам, устраните ошибки и продолжайте дальше.
Подготовка сервера
Проверим текущее состояние сервис-брокера, выполнив запрос:

Если в поле is_broker_enabled указано значение 0, то выполним следующий запрос:

Операция должна выполниться без ошибок, а результат предыдущего запроса должен показать 1 в поле is_broker_enabled
Включаем опцию DatabaseMail XPs через системную процедуру sp_configure, выполнив следующий запрос:
GO
sp_configure 'show advanced', 1     -- Включаем расширенное отображение списка конфигурации
RECONFIGURE
GO
sp_CONFIGURE 'Database Mail XPs', 1 -- включаем опцию использования email
RECONFIGURE

Запрос должен выполниться без ошибок. Для проверки включения опций необходимо выполнить процедуру sp_configure:
Проверяем, что для каждой из конфигураций, поля config_value и run_value имеют значение 1.  

Создание аккаунта
Для создания аккаунта используется процедура sysmail_add_account_sp. Процедура sysmail_add_account_sp имеет гораздо больше параметров, включая порт сервера, логин, пароль и т.д. Узнать подробнее можно по ссылке sysmail_add_account_sp
Выполним следующий запрос для создания аккаунта:
-- Формируем переменные для аккаунта
DECLARE @account_name varchar(100) = 'test_account';
DECLARE @description varchar(100) = 'test account description'
DECLARE @email_address varchar(100) = (SELECT CAST(CONNECTIONPROPERTY('local_net_address') AS varchar) + '@SQLServer');
DECLARE @display_name varchar(100) = (SELECT 'test message '+ CAST(CONNECTIONPROPERTY('local_net_address') AS varchar) +' server');
DECLARE @mailserver_name varchar(100) = '10.30.1.58'
-- Создание аккаунта
EXECUTE msdb.dbo.sysmail_add_account_sp
    @account_name = @account_name,          -- Название аккаунта
    @description = @description,            -- Описание аккаунта
    @email_address = @email_address,        -- Адрес отправителя
    @replyto_address = @email_address,      -- Адрес для ответа на сообщения
    @display_name = @display_name,          -- Отображаемое имя отправителя в сообщении
    @mailserver_name = @mailserver_name;    -- Адрес SMTP сервера
Запрос должен выполниться без ошибок.

Создание профиля
Для создания профиля используется процедура msdb.dbo.sysmail_add_profile_sp. Подробнее о процедуре создания профиля sysmail_add_profile_sp
Выполним следующий запрос, который создаст для нас профиль
-- Формируем переменные для профиля
DECLARE @profile_name varchar(100) = 'test_profile';
DECLARE @description varchar(255) = 'test profile description'
-- Создание профиля
EXECUTE msdb.dbo.sysmail_add_profile_sp
    @profile_name = @profile_name,  -- Название профиля
    @description = @description;    -- Описание профиля
Запрос должен выполниться без ошибок

Добавление аккаунта в профиль
Далее необходимо добавить аккаунт в профиль, для этого будем использовать процедуру msdb.dbo .sysmail_add_profileaccount_sp. Подробнее о процедуре добавления аккаунта к профилю sysmail_add_profileaccount_sp 
Выполним следующий запрос, который добавит аккаунт в профиль
-- Формируем переменные для профиля
DECLARE @profile_name varchar(100) = 'test_profile';
DECLARE @account_name varchar(100) = 'test_account';
DECLARE @sequence_number int = 1;
-- Добавляем аккаунт в профиль
EXECUTE msdb.dbo.sysmail_add_profileaccount_sp
    @profile_name = @profile_name,          -- Название профиля 
    @account_name = @account_name,          -- Название аккаунта
    @sequence_number = @sequence_number;    -- Порядковый номер аккаунта в профиле
@sequence_number - порядковый номер аккаунта в профиле, так как наш профиль новый, то добавляемый аккаунт будет под номером 1.
Запрос должен выполниться без ошибок.

Предоставление разрешения на использование профиля
Для предоставления разрешения на использование профиля используется процедура msdb.dbo.sysmail_add_principalprofile_sp. 
Публичный профиль доступен для всех пользователей в базе данных msdb, хотя пользователи также должны быть членами роли DatabaseMailUserRole для выполнения sp_send_dbmail. 
Подробнее о процедуре предоставления прав профилю sysmail_add_principalprofile_sp
Выполним следующий запрос, который сделает профиль открытым (публичным)
-- Формируем переменные для профиля
DECLARE @profile_name varchar(100) = 'test_profile';
DECLARE @principal_name varchar(100) = 'public';
DECLARE @is_default int = 1;
-- Делаем профиль публичным
EXECUTE msdb.dbo.sysmail_add_principalprofile_sp
    @profile_name = @profile_name,          -- Название профиля
    @principal_name = @principal_name,      -- Статус профиля
    @is_default = @is_default;              -- Профиль по умолчанию
Запрос должен выполниться без ошибок.

Проверяем отправку email сообщения
Для отправки писем используется процедура sp_send_dbmail, подробнее о процедуре sp_send_dbmail.Мы используем минимальный набор для тестирования и выполним следующий запрос:
-- Отправляем email сообщение
EXEC  msdb.dbo.sp_send_dbmail
    @Profile_name = 'test_profile',                 -- Название профиля
    @Recipients   = 'vladislav.zagoskin@rt.ru',     -- Адресаты через ;
    @body = 'Тестовое письмо',                      -- Тело письма
    @body_format = 'TEXT',                          -- Формат тела письма
    @Subject = 'Проверка';                          -- Тема письма

Результатом должно быть присланное сообщение на указанную почту:

Удаление
Чтобы удалить аккаунт из профиля, можно выполнить процедуру sysmail_delete_profileaccount_sp с указанием профиля и аккаунта:
EXECUTE msdb.dbo.sysmail_delete_profileaccount_sp
    @profile_name = 'test_profile',
    @account_name = 'test_account'
Для удаления аккаунта можно воспользоваться процедурой sysmail_delete_account_sp с указанием имени аккаунта:
Для удаления профиля можно воспользоваться процедурой sysmail_delete_profile_sp с указанием имени профиля:
Альтернативный вариант
SQL Server предоставляет UI интерфейс для настройки отправки email писем, для этого нужно подключиться к серверу и в обозревателе объектов найти пункт Компоненты Database Mail и запустить его.

Откроется интерфейс для настройки.