--- title: "Create a Database Mail Profile" description: "Create a Database Mail Profile" author: WilliamDAssafMSFT ms.author: wiassaf ms.date: 02/23/2023 ms.service: sql ms.topic: how-to helpviewer_keywords: - "Database Mail [SQL Server], public profiles" - "profiles [SQL Server], Database Mail" - "public profiles [Database Mail]" --- # Create a Database Mail Profile [!INCLUDE [SQL Server SQL MI](../../includes/applies-to-version/sql-asdbmi.md)] Use either the **Database Mail Configuration Wizard** or [!INCLUDE[tsql](../../includes/tsql-md.md)] to create Database Mail public and private profiles. For more information about mail profiles, see [Database Mail Profile](database-mail-configuration-objects.md). ## 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](../../relational-databases/database-mail/create-a-database-mail-account.md). ### 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 [!INCLUDE[ssNoVersion](../../includes/ssnoversion-md.md)] 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 [!INCLUDE[ssNoVersion](../../includes/ssnoversion-md.md)] 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)](../../relational-databases/system-stored-procedures/sysmail-add-profile-sp-transact-sql.md) as follows: ```sql 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)](../../relational-databases/system-stored-procedures/sysmail-add-profileaccount-sp-transact-sql.md) as follows: ```sql 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)](../../relational-databases/system-stored-procedures/sysmail-add-principalprofile-sp-transact-sql.md) as follows: ```sql 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. ```sql -- 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 = 'dba@Adventure-Works.com', @replyto_address = 'danw@Adventure-Works.com', @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 [!INCLUDE[ssNoVersion](../../includes/ssnoversion-md.md)] instance. - To create a new profile, run the system stored procedure [sysmail_add_profile_sp (Transact-SQL)](../../relational-databases/system-stored-procedures/sysmail-add-profile-sp-transact-sql.md) as follows: ```sql 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)](../../relational-databases/system-stored-procedures/sysmail-add-profileaccount-sp-transact-sql.md) as follows: ```sql 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)](../../relational-databases/system-stored-procedures/sysmail-add-principalprofile-sp-transact-sql.md) as follows: ```sql 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. ```sql -- 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 = 'db_users@Adventure-Works.com', @replyto_address = 'danw@Adventure-Works.com', @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 ; ``` ## Next steps - [Configure SQL Server Agent](../../ssms/agent/configure-sql-server-agent.md) - [Configure SQL Server Agent mail to use Database Mail](configure-sql-server-agent-mail-to-use-database-mail.md) - [General database mail troubleshooting steps](database-mail-general-troubleshooting.md)