Below Information collected from peer blogs, and very usefull.
===============================================
To Enable Database
Mail execute the following block of code:
use master
go
exec sp_configure 'show advanced options', 1
reconfigure
exec sp_configure
'Database Mail XPs', 1
reconfigure
Deleting the Old
Profiles :
IF
EXISTS(
SELECT * FROM msdb.dbo.sysmail_profileaccount
pa JOIN msdb.dbo.sysmail_profile p
ON pa.profile_id = p.profile_id
JOIN msdb.dbo.sysmail_account a ON pa.account_id = a.account_id WHERE p.name = @ProfileName AND
a.name = @AccountName)
BEGIN
PRINT 'Deleting Profile Account'
EXECUTE sysmail_delete_profileaccount_sp @profile_name = @ProfileName, @account_name = @AccountName
END
IF
EXISTS(
SELECT * FROM msdb.dbo.sysmail_profile p WHERE
p.name = @ProfileName)
BEGIN
PRINT 'Deleting Profile.'
EXECUTE sysmail_delete_profile_sp @profile_name = @ProfileName
END
IF
EXISTS(
SELECT * FROM msdb.dbo.sysmail_account a WHERE
a.name = @AccountName)
BEGIN
PRINT
'Deleting Account.' EXECUTE sysmail_delete_account_sp @account_name = @AccountName
END
Creating Accounts
& Profiles for DB Mail:
--//
Create a Database Mail account
EXECUTE msdb.dbo.sysmail_add_account_sp
@account_name = 'Test Mail Account',
@description = 'Mail account for administrative e-mail.',
@email_address = 'abc@xyz.com',
@replyto_address = 'abc@xyz.com',
@display_name = 'TEST Display',
@mailserver_name = 'smtp.xxxx.net',
@port
= 587,
@username = 'xyz',
@password = 'xxyyzz',
@enable_ssl = 1
-- Create a Database Mail profile
EXECUTE msdb.dbo.sysmail_add_profile_sp @profile_name = 'Test Mail Profile', @description = 'Profile used for
administrative mail.'
-- Add the account to the profile
EXECUTE msdb.dbo.sysmail_add_profileaccount_sp @profile_name = 'Test Mail Profile', @account_name = 'Test Mail Account',
@sequence_number =1
-- Grant access to the profile to the DBMailUsers role
EXECUTE msdb.dbo.sysmail_add_principalprofile_sp
@profile_name = 'Test Mail Profile',
@principal_name = 'public', @is_default = 1
Sending Mail and
Check its status:
--Send
mail
EXEC msdb.dbo.sp_send_dbmail @recipients=N'abba@gmail.com',
@body= 'Test Email Body', @subject = 'Test Email Subject', @profile_name = 'Test Mail Profile'
--Send
mail with attachment
EXEC msdb.dbo.sp_send_dbmail @profile_name = 'DBMail'
,@recipients = 'GroupSQLDBA@MyCo.com'
,@from_address = 'DBMail@MyCo.com'
,@query
= 'SELECT resource_type, resource_database_id,
request_mode,
request_session_id
FROM sys.dm_tran_locks
WHERE request_mode IN (''IX'', ''X'')'
,@subject = 'Exclusive Locks'
,@attach_query_result_as_file = 1 ;
Important Tables used
in configuring Database mail and check their status:
--Profiles
SELECT * FROM msdb.dbo.sysmail_profile
--Accounts
SELECT * FROM msdb.dbo.sysmail_account
--Profile
Accounts
select * from msdb.dbo.sysmail_profileaccount
--Principal
Profile
select * from msdb.dbo.sysmail_principalprofile
--Mail
Server
SELECT * FROM msdb.dbo.sysmail_server
SELECT * FROM msdb.dbo.sysmail_servertype
SELECT * FROM msdb.dbo.sysmail_configuration
--Email
Sent Status
SELECT * FROM msdb.dbo.sysmail_allitems
SELECT * FROM msdb.dbo.sysmail_sentitems
SELECT * FROM msdb.dbo.sysmail_unsentitems
SELECT * FROM msdb.dbo.sysmail_faileditems
--Email
Status
SELECT SUBSTRING(fail.subject,1,25) AS
'Subject', fail.mailitem_id, LOG.descriptionFROM
msdb.dbo.sysmail_event_log LOG
join msdb.dbo.sysmail_faileditems fail ON
fail.mailitem_id = LOG.mailitem_id WHERE event_type = 'error'
--Mail Queues
EXEC msdb.dbo.sysmail_help_queue_sp
--DB
Mail Status
EXEC msdb.dbo.sysmail_help_status_sp
=====================================================================================
Examples
A. Sending an e-mail
message
This example sends an e-mail message to Dan Wilson using the
e-mail address danw@Adventure-Works.com. The message has the subject Automated
Success Message. The body of the message contains the sentence 'The stored
procedure finished successfully'.
EXEC msdb.dbo.sp_send_dbmail
@profile_name =
'Adventure Works Administrator',
@recipients =
'danw@Adventure-Works.com',
@body = 'The
stored procedure finished successfully.',
@subject =
'Automated Success Message' ;
B. Sending an e-mail
message with the results of a query
This example sends an e-mail message to Dan Wilson using the
e-mail address danw@Adventure-Works.com. The message has the subject Work Order
Count, and executes a
query that shows the number of work orders with a DueDate
less than two days after April 30, 2004. Database Mail attaches the result as a
text file.
EXEC msdb.dbo.sp_send_dbmail
@profile_name =
'Adventure Works Administrator',
@recipients =
'danw@Adventure-Works.com',
@query = 'SELECT
COUNT(*) FROM AdventureWorks2012.Production.WorkOrder
WHERE DueDate > ''2004-04-30''
AND DATEDIFF(dd, ''2004-04-30'',
DueDate) < 2' ,
@subject = 'Work
Order Count',
@attach_query_result_as_file = 1 ;
C. Sending an HTML
e-mail message
This example sends an e-mail message to Dan Wilson using the
e-mail address danw@Adventure-Works.com. The message has the subject Work Order
List, and contains an HTML document that shows the work orders with a DueDate
less than two days after April 30, 2004. Database Mail sends the message in
HTML format.
DECLARE @tableHTML
NVARCHAR(MAX) ;
SET @tableHTML =
N'
Work
Order Report
' +
N'
Work Order ID | Product
ID | ' +
N'
Name | Order Qty | Due
Date | ' +
N'
Expected Revenue |