m@rc-lenzin

Wenn etwas schief geht, dann freu dich. Das sind die Geschichten die dir in Erinnerung bleiben werden

SQL Server Database Mail per Skript einrichten

use master;

declare 
	@profile_id				int, 
	@profile_description	sysname,
	@profile_name			varchar(100) = 'MailDefault',
	@account_name			varchar(100) = 'IT-Mail',
	@testemailto			varchar(100) = 'meine.email@domain.ch',
	@email					varchar(100) = cast(SERVERPROPERTY('MachineName') as varchar(20))+'@domain.ch',
	@mailrelay				varchar(100) = 'mailproxy',
	@display_name			varchar(100) = @@SERVERNAME+' - SQL-Server';
begin
	select @profile_id = COALESCE(MAX(profile_id),1) from msdb.dbo.sysmail_profile
	select @profile_description = 'Database Mail Profile on ' + @@servername 
	
	if exists(	SELECT	* 
				  FROM	msdb.dbo.sysmail_profile 
				  where	name	= @profile_name)
		exec msdb.dbo.sysmail_delete_profile_sp			
			@profile_name		= @profile_name;

	if exists(	SELECT	* 
				  FROM	msdb.dbo.sysmail_account 
				  where name	= @account_name)
		exec msdb.dbo.sysmail_delete_account_sp			
			@account_name		= @account_name;

	EXECUTE msdb.dbo.sysmail_add_account_sp
		@account_name		= @account_name,
		@description		= '',
		@email_address		= @email,
		@replyto_address	= @email,
		@display_name		= @display_name,
		@mailserver_name	= @mailrelay,
		@port				= 25;

	EXECUTE msdb.dbo.sysmail_add_profile_sp
		@profile_name		= @profile_name,
		@description		= @profile_description;

	EXECUTE msdb.dbo.sysmail_add_profileaccount_sp
		@profile_name		= @profile_name,
		@account_name		= @account_name,
		@sequence_number	= @profile_id;

	EXECUTE msdb.dbo.sysmail_add_principalprofile_sp
		@profile_name		= @profile_name,
		@principal_id		= 0,
		@is_default			= 1 ;

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

	exec msdb.dbo.sp_set_sqlagent_properties 
		@email_save_in_sent_folder = 0

	SELECT * FROM msdb.dbo.sysmail_profile;
	SELECT * FROM msdb.dbo.sysmail_account;
	SELECT * FROM msdb.dbo.sysmail_profileaccount;

	DECLARE @sub VARCHAR(100)
	DECLARE @body_text NVARCHAR(MAX)
	SELECT @sub			= 'Test from New SQL install on ' + @@servername
	SELECT @body_text	= N'This is a test of Database Mail.' + CHAR(13) + CHAR(13) + 
						   'SQL Server Version Info: ' + CAST(@@version AS VARCHAR(500))

	EXEC msdb.dbo.sp_send_dbmail 
		@profile_name	= @profile_name,
		@recipients		= @testemailto,
		@subject		= @sub,
		@body			= @body_text
end

Weiter Beitrag

Zurück Beitrag

© 2025 m@rc-lenzin

Thema von Anders Norén