Create a Database Mail Profile
Applies to: SQL Server Azure SQL Managed Instance
Use either the Database Mail Configuration Wizard or Transact-SQL to create Database Mail public and private profiles. For more information about mail profiles, see Database Mail Profile.
Before You Begin
Prerequisites
Create one or more Database Mail accounts for the profile. For more information about creating Database Mail accounts, see Create a Database Mail Account.
Security
A public profile allows any user with access to the msdb
database to send e-mail using that profile. A private profile can be used by a user or by a role. Granting roles access to profiles creates a more easily maintained architecture. To send mail you must be a member of the DatabaseMailUserRole in the msdb
database, and have access to at least one Database Mail profile.
Permissions
The user creating the profiles accounts and executing stored procedures should be a member of the sysadmin fixed server role.
Use Database Mail Configuration Wizard
To Create a Database Mail profile
In Object Explorer, connect to the SQL Server instance you want to configure Database Mail on, and expand the server tree.
Expand the Management node
Double-click Database Mail to open the Database Mail Configuration Wizard.
On the Select Configuration Task page, select Manage Database Mail accounts and profiles option and select Next.
On the Manage Profiles and Accounts page, select Create a new profile option, and select Next.
On the New Profile page, specify the Profile name, Description and add accounts to be included in the profile, and select Next.
On the Complete the Wizard page, review the actions to be performed and select Finish to complete creating the new profile.
To configure a Database Mail private profile:
Open the Database Mail Configuration Wizard.
On the Select Configuration Task page, select Manage Database Mail accounts and profiles option, and select Next.
On the Manage Profiles and Accounts page, select Manage profile security option and select Next.
In the Private Profiles tab, select the check box for the profile you would like to configure and select Next.
On the Complete the Wizard page, review the actions to be performed and select Finish to complete configuring the profile.
To configure a Database Mail public profile:
Open the Database Mail Configuration Wizard.
On the Select Configuration Task page, select Manage Database Mail accounts and profiles option, and select Next.
On the Manage Profiles and Accounts page, select Manage profile security option and select Next.
In the Public Profiles tab, select the check box for the profile you would like to configure and select Next.
On the Complete the Wizard page, review the actions to be performed and select Finish to complete configuring the profile.
Use Transact-SQL
Create a database mail private profile
Connect to the SQL Server instance with SQL Server Management Studio (SSMS) or Azure Data Studio. Open a new query window.
To create a new profile, run the system stored procedure sysmail_add_profile_sp (Transact-SQL) as follows:
EXECUTE msdb.dbo.sysmail_add_profile_sp @profile_name = 'Profile Name' , @description = 'Description';
In the previous script, @profile_name is the name of the profile, and @description is the description of the profile. This parameter is optional.
For each account, run the stored procedure sysmail_add_profileaccount_sp (Transact-SQL) as follows:
EXECUTE msdb.dbo.sysmail_add_profileaccount_sp @profile_name = 'Profile Name' , @account_name = 'Name of the account' , @sequence_number = 'sequence number of the account within the profile.';
In the previous sample script, @profile_name is the name of the profile, and @account_name is the name of the account to add to the profile, @sequence_number determines the order in which the accounts are used in the profile.
For each database role or user that will send mail using this profile, grant access to the profile. To do this, run the stored procedure sysmail_add_principalprofile_sp (Transact-SQL) as follows:
EXECUTE msdb.sysmail_add_principalprofile_sp @profile_name = 'Name of the profile' , @principal_name = 'Name of the database user or role' , @is_default = 'Default profile enabled';
In the previous sample script, @profile_name is the name of the profile, @principal_name is the name of the database user or role, and @is_default determines whether this profile is the default for the database user or role.
The following example creates a Database Mail account, creates a Database Mail private profile, then adds the account to the profile and grants access to the profile to the DBMailUsers database role in the msdb
database.
-- Create a Database Mail account
EXECUTE msdb.dbo.sysmail_add_account_sp
@account_name = 'AdventureWorks Administrator',
@description = 'Mail account for administrative e-mail.',
@email_address = '[email protected]',
@replyto_address = '[email protected]',
@display_name = 'AdventureWorks Automated Mailer',
@mailserver_name = 'smtp.Adventure-Works.com' ;
-- Create a Database Mail profile
EXECUTE msdb.dbo.sysmail_add_profile_sp
@profile_name = 'AdventureWorks Administrator Profile',
@description = 'Profile used for administrative mail.' ;
-- Add the account to the profile
EXECUTE msdb.dbo.sysmail_add_profileaccount_sp
@profile_name = 'AdventureWorks Administrator Profile',
@account_name = 'AdventureWorks Administrator',
@sequence_number =1 ;
-- Grant access to the profile to the DBMailUsers role
EXECUTE msdb.dbo.sysmail_add_principalprofile_sp
@profile_name = 'AdventureWorks Administrator Profile',
@principal_name = 'ApplicationUser',
@is_default = 1 ;
Create a database mail public profile
Connect to the SQL Server instance.
To create a new profile, run the system stored procedure sysmail_add_profile_sp (Transact-SQL) as follows:
EXECUTE msdb.dbo.sysmail_add_profile_sp @profile_name = 'Profile Name' , @description = 'Description';
In the previous script, @profile_name is the name of the profile, and @description is the description of the profile. This parameter is optional.
For each account, run the stored procedure sysmail_add_profileaccount_sp (Transact-SQL) as follows:
EXECUTE msdb.dbo.sysmail_add_profileaccount_sp @profile_name = 'Name of the profile' , @account_name* = 'Name of the account' , @sequence_number* = 'sequence number of the account within the profile.'
In the previous sample script, @profile_name is the name of the profile, and @account_name is the name of the account to add to the profile, @sequence_number determines the order in which the accounts are used in the profile.
To grant public access, run the stored procedure sysmail_add_principalprofile_sp (Transact-SQL) as follows:
EXECUTE msdb.sysmail_add_principalprofile_sp @profile_name = 'Name of the profile' , @principal_name = 'public or 0' , @is_default = 'Default Profile enabled';
In the previous sample script, @profile_name is the name of the profile, and @principal_name to indicate this is a public profile, @is_default determines whether this profile is the default for the database user or role.
The following example creates a Database Mail account, creates a Database Mail private profile, then adds the account to the profile and grants public access to the profile.
-- Create a Database Mail account
EXECUTE msdb.dbo.sysmail_add_account_sp
@account_name = 'AdventureWorks Public Account',
@description = 'Mail account for use by all database users.',
@email_address = '[email protected]',
@replyto_address = '[email protected]',
@display_name = 'AdventureWorks Automated Mailer',
@mailserver_name = 'smtp.Adventure-Works.com' ;
-- Create a Database Mail profile
EXECUTE msdb.dbo.sysmail_add_profile_sp
@profile_name = 'AdventureWorks Public Profile',
@description = 'Profile used for administrative mail.' ;
-- Add the account to the profile
EXECUTE msdb.dbo.sysmail_add_profileaccount_sp
@profile_name = 'AdventureWorks Public Profile',
@account_name = 'AdventureWorks Public Account',
@sequence_number =1 ;
-- Grant access to the profile to all users in the msdb database
EXECUTE msdb.dbo.sysmail_add_principalprofile_sp
@profile_name = 'AdventureWorks Public Profile',
@principal_name = 'public',
@is_default = 1 ;