/*
Run this script after setting proper configurations
*/
-- ENABLE DATABASE MAIL FEATURE IN SYSTEM CONFIGURATION
use
master
go
sp_configure
'show advanced options',1
go
reconfigure
with
override
go
sp_configure
'Database Mail XPs',1
go
reconfigure
go
-- DECLARE DATABASE MAIL ACCOUNT PARAMETERS
Declare @qmail_account_name as
varchar(64);
Declare @qmail_account_description as
varchar(64);
Declare @qmail_account_email_address as
varchar(64);
Declare @qmail_account_display_name as
varchar(64);
Declare @qmail_account_username as
varchar(64);
Declare @qmail_account_password as
varchar(64);
Declare @qmail_account_mailserver_name as
varchar(64);
-- DECLARE PROFILE PARAMETERS
declare @qmail_profile_profile_name as
varchar(64);
declare @qmail_profile_description as
varchar(64);
-- DECLARE PRINCIPLES
declare @qprincipal_name as
varchar(16);
-- SET SMTP ACCOUNT DETAILS, USERNAME AND PASSWORD HERE
set @qmail_account_mailserver_name =
'smtp.bizmail.yahoo.com'
-- your smtp address
set @qmail_account_username='something@something.com'
-- username
set @qmail_account_email_address =
'myEmailName@something.com'
-- email address
set @qmail_account_password='password for user (something@something.com)'
-- password for username
set @qmail_account_name =
'YourAccountName (e.g MyAppName_EmailAccount)'
set @qmail_account_description =
'Mail account for administrative e-mail.'
set @qmail_account_display_name =
'MyApplicationName Automated Mailer'
-- PROFILE PARAMETERS ASSIGNMENT
set @qmail_profile_profile_name =
'MyAppNameEmailServiceProfile'
set @qmail_profile_description =
'Profile used for database mail jobs'
--PROFILE TYPE
set @qprincipal_name=
'public'
if ( @qmail_account_mailserver_name =
''
or @qmail_account_username=''
or @qmail_account_email_address =
''
or @qmail_account_password=''
)
begin
Select
'Please enter SMTP details'
as [Comments]
end
else
Begin
if
exists(select
*
from msdb.dbo.sysmail_account where [name]=@qmail_account_name)
begin
exec msdb.dbo.sysmail_delete_account_sp
@account_name = @qmail_account_name
end
EXECUTE msdb.dbo.sysmail_add_account_sp
@account_name = @qmail_account_name,
@description = @qmail_account_description,
@email_address = @qmail_account_email_address,
@display_name = @qmail_account_display_name,
@username=@qmail_account_username,
@password=@qmail_account_password,
@mailserver_name = @qmail_account_mailserver_name
if
exists(select
*
from msdb.dbo.sysmail_profile where [name]=@qmail_profile_profile_name)
begin
exec msdb.dbo.sysmail_delete_profile_sp
@profile_name = @qmail_profile_profile_name
end
EXECUTE msdb.dbo.sysmail_add_profile_sp
@profile_name = @qmail_profile_profile_name,
@description = @qmail_profile_description
EXECUTE msdb.dbo.sysmail_add_profileaccount_sp
@profile_name = @qmail_profile_profile_name,
@account_name = @qmail_account_name,
@sequence_number = 1
EXECUTE msdb.dbo.sysmail_add_principalprofile_sp
@profile_name = @qmail_profile_profile_name,
@principal_name = @qprincipal_name,
@is_default = 1 ;
end
if
exists
(select 1 from
sys.objects
where name =
'p_SendEmailNotification'
and
type
=
'p')
drop
procedure p_SendEmailNotification
go
Create
Procedure [dbo].[p_SendEmailNotification]
as
Begin
Declare @ErrorCode as
int
BEGIN
TRANSACTION
declare @MailPriority varchar(8);
declare @sendAddressTo varchar (256);
declare @sendAddressCC varchar(256);
declare @MailBodyFormat varchar(8);
declare @DBMailProfile varchar(32);
set @MailBodyFormat ='HTML'
set @DBMailProfile =
'Email Profile Name which you have created during DB Mail setup (e.g MyAppNameEmailServiceProfile)'
set @MailPriority =
'Normal'
select @sendAddressTo =
'someone@someone.com,abc@abc.com'
select @sendAddressCC ='someone@someone.com,xyz@xyz.com'
EXEC msdb.dbo.sp_send_dbmail
@profile_name = @DBMailProfile,
@recipients=@sendAddressTo,
@copy_recipients = @sendAddressCC,
@importance = @MailPriority,
@subject =
'Email Subject',
@body =
'Email Body....hi this is test email',
@body_format = @MailBodyFormat ;
set @ErrorCode =
@@ERROR
if(@ErrorCode <> 0)
begin
goto ERR_HANDLER
end
COMMIT
TRANSACTION
Set @ErrorCode =
@@Error
if @ErrorCode<>0 begin
goto ERR_HANDLER end
ERR_HANDLER:
if @ErrorCode<>0
Begin
ROLLBACK
TRANSACTION
End