Программирование на SQL | Создание Email аккаунта для SQL Server

В этом разделе сайта попытаемся разобраться с программированием баз данных. Язык называется SQL. В этом языке нет или почти нет классов, переменных, массивов и циклов. Сравнивать его с языками высокого уровня не имеет смысла. Но без него Вы не сможете написать интерфейс для настольных приложений Windows или интернет сайтов. Для Разработчика надо обязательно надо знать SQL, библиотеки обработки данных на C#, Microsoft Visual Studio, Microsoft SQL Server Management Studio или dbForge Studio for SQL Server

Создание Email аккаунта для SQL Server

Отправка почты с использованием SQL Server редко используется специалистами, т.к. существует много способов отправить почту используя языки высокого уровня, например, C#. Они позволяют проверить текст письма на ошибки, отобразить их на экране и только потом отправить письмо. SQL Server не обладает WInForm интерфейсом. Но иногда бывает нужно отправить такое письмо администратору, например, из триггера таблицы, после того, какие-то данные изменили базу данных (ордера, ошибки, заказы и т.п.). Рассмотри как это можно сделать

Для начала нужно создать Аккаунт для отправки письма. Вот пример.

ALTER PROCEDURE [dbo].[SSD_SendAuto_AddAccount]
	@UsEmail AS NVARCHAR(128)
AS
BEGIN
		SET NOCOUNT ON;
		
		IF ISNULL(@UsEmail,'') = '' RETURN -1
		
		-- Управление профилем
		DECLARE @UsAccount NVARCHAR(255),
				@UsProfile NVARCHAR(255)

		SET @UsAccount = 'Account. ' + @UsEmail
		SET @UsProfile = 'Profile. ' + @UsEmail

		IF NOT EXISTS( SELECT account_id from msdb.dbo.sysmail_account WHERE [NAME]=@UsAccount)
		BEGIN

			-- 1. Создание аккаунта 
			EXECUTE msdb.dbo.sysmail_add_account_sp  
				@account_name = @UsAccount,  
				@description = 'Авторассылка счетов',  
				@email_address = @UsEmail,  
				@display_name = 'ООО Компания. Авторассылка счетов',  
				@mailserver_name = '111.11.0.11',
				@port='25',
				@username=@UsEmail,
				@password='***',
				@enable_ssl=0;
			    
			EXECUTE msdb.dbo.sysmail_add_profile_sp  
				@profile_name = @UsProfile,  
				@description = 'Профиль пользователя для рассылки Email' ;
			 
			EXECUTE msdb.dbo.sysmail_add_profileaccount_sp  
				@profile_name = @UsProfile,
				@account_name = @UsAccount,  
				@sequence_number =1 ;  
			
			WAITFOR DELAY '00:00:03';
		END
END

Но даже для того, чтобы создать Аккаунт нужно провести предварительную настройку SQL Server. Привожу пример как это сделать. Раскомментируйте нужный блок и запустите скрипт. Рядом находится также команда SELECT для проверки данных.

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:		Конюков Виктор
-- Create date: 18.01.2019
-- Description:	Создание аккаунта для Email SQL Server
-- =============================================
/*
 -- 1. Активация Email SQL Server
sp_configure 'show advanced options', 1;  
GO  
RECONFIGURE WITH OVERRIDE;  
GO  
sp_configure 'Database Mail XPs', 1;  
GO  
RECONFIGURE WITH OVERRIDE; 
GO  

-- 2. Создание аккаунта 
EXECUTE msdb.dbo.sysmail_add_account_sp  
    @account_name = 'OOO Firm Public Account',  
    @description = 'Специальный аккаунт для использования всеми пользователями Email',  
    @email_address = 'ivanov@test.ru',  
    @replyto_address = 'ivanov@test.ru',  
    @display_name = 'OOO Firm Automated Mailer',  
    @mailserver_name = '111.11.0.11',
    @port='25',
    @password='***',
    @enable_ssl=0,
    @username='ivanov@test.ru' ;  
    
-- 2а. Меняем акаунт
EXECUTE msdb.dbo.sysmail_update_account_sp  
     @account_id = 1 
    ,@account_name = 'Аакаунт. Рассылка счетов'  
    ,@description = 'Автоматическая рассылка счетов клиентам'  
    ,@email_address = 'mail@mail.ru'  
    ,@display_name = 'Авторассылка счетов'  
    ,@replyto_address = NULL  
    ,@mailserver_name = '111.11.0.11'  
    ,@mailserver_type = 'SMTP'  
    ,@port = 25  
    ,@timeout = 60  
    ,@username = 'ivanov@test.ru'  
    ,@password = '***'  
    ,@use_default_credentials = 0  
    ,@enable_ssl = 0;  
    
SELECT * from msdb.dbo.sysmail_account

--UPDATE msdb.dbo.sysmail_account SET display_name = 'ООО Компания. Авторассылка счетов'

-- 3. Создание профиля  
EXECUTE msdb.dbo.sysmail_add_profile_sp  
    @profile_name = 'OOO Firm Public Profile',  
    @description = 'Профиль используется для тестирования Email' ;  

-- 3а. Изменение профиля  
EXECUTE msdb.dbo.sysmail_update_profile_sp
    @profile_id = 1
    ,@profile_name = 'Профиль. Рассылка счетов'
    ,@description = 'Профиль для автоматической рассылки счетов клиентам';
SELECT * from msdb.dbo.sysmail_profile

-- 4. Добавление аккаунта в профиль. Меняется только ID
EXECUTE msdb.dbo.sysmail_add_profileaccount_sp  
    @profile_name = 'OOO Firm Public Profile',  
    @account_name = 'OOO Firm Public Account',  
    @sequence_number =1 ;  
SELECT * from msdb.dbo.sysmail_profileaccount

-- 5. Разрешение доступа всем пользователям msdb
EXECUTE msdb.dbo.sysmail_add_principalprofile_sp  
    @profile_name = 'OOO Firm Public Profile',  
    @principal_name = 'public',  
    @is_default = 1 ;  
    
    EXECUTE msdb.dbo.sysmail_add_principalprofile_sp
    @profile_name = 'OOO Firm Public Profile',
    @principal_name = 'FirmService',
    @is_default = 1 ;
    
--SELECT * FROM msdb.dbo.sysmail_principalprofile

-- =========================================== ----
	SELECT * from msdb.dbo.sysmail_mailitems
	
-- 5a. Удаление сообщений
	DELETE FROM msdb.dbo.sysmail_allitems WHERE profile_id=1

sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'Ole Automation Procedures', 1;
GO
RECONFIGURE;
GO	

 */

 В следующем сообщении будет приведен пример как отправить письмо через SQL Server в формате html.

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

Loading