create procedure [dbo].[CdoSysEMail]
(
@email_from varchar(200),
@email_to varchar(200),
@email_bcc varchar(200) = '',
@email_subject varchar(200) = '',
@email_body varchar(7000) =''
)
as
begin
-- declare variables
declare @obj_message_id int
declare @output int
declare @error_output varchar(5000)
declare @error_source varchar(255)
declare @error_description varchar(1000)
-- create CDO.Message object
exec @output = sp_OACreate 'CDO.Message', @obj_message_id OUT
-- set server properties in the object
exec @output = sp_OASetProperty @obj_message_id, 'Configuration.fields("http://schemas.microsoft.com/cdo/configuration/sendusing").Value','2'
exec @output = sp_OASetProperty @obj_message_id, 'Configuration.fields("http://schemas.microsoft.com/cdo/configuration/smtpserverport").Value','25'
exec @output = sp_OASetProperty @obj_message_id, 'Configuration.fields("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate").Value','0'
exec @output = sp_OASetProperty @obj_message_id, 'Configuration.fields("http://schemas.microsoft.com/cdo/configuration/smtpserver").Value', '193.19.88.36'
-- save those properties
exec @output = sp_OAMethod @obj_message_id, 'Configuration.Fields.Update', Null
-- pass the procedure parameters through to the e-mail
exec @output = sp_OASetProperty @obj_message_id, 'To', @email_to
exec @output = sp_OASetProperty @obj_message_id, 'Bcc', @email_bcc
exec @output = sp_OASetProperty @obj_message_id, 'From', @email_from
exec @output = sp_OASetProperty @obj_message_id, 'Subject', @email_subject
exec @output = sp_OASetProperty @obj_message_id, 'TextBody', @email_body
-- send the email
exec @output = sp_OAMethod @obj_message_id, 'Send', NULL
-- error handling
if @output <> 0
begin
declare @No Int
Set @No=@output
Select @No
exec @output = sp_OAGetErrorInfo NULL, @error_source OUT, @error_description OUT
if @output = 0
begin
Set @error_output = 'Error : ' + cast(@No As varchar) + ', Source: ' + @error_source + ', Description: ' + @error_description
Raiserror(@error_output,16,1)
end
else
begin
Raiserror('could not determine error (sp_OAGetErrorInfo failed)', 16,1)
end
end
-- clean up
exec @output = sp_OADestroy @obj_message_id
end
go
Testing the procedure -
execute CdoSysEMail @email_from ='sqladmin@mydomain.net', @email_to = 'recipient@mydomain.net', @email_subject = 'test, please ignore!', @email_body = 'test message body'
No comments:
Post a Comment