Monday, November 28, 2011

Sending SMTP Mail using a Stored Procedure

 
 
IF EXISTS (SELECT NAME FROM sysobjects 
    WHERE name = 'sp_SMTPMail' AND type = 'P')
    DROP PROCEDURE sp_SMTPMail
GO
 
Create Procedure sp_SMTPMail
  @SenderName varchar(100),
  @SenderAddress varchar(100),
  @RecipientName varchar(100),
  @RecipientAddress varchar(100),
  @Subject varchar(200),
  @Body varchar(8000),
  @MailServer varchar(100) = 'localhost' 
  /* This Should be UR MailServer*/

AS 
BEGIN
 
  SET nocount on
 
  declare @oMail int --Object reference
  declare @resultcode int
 
  EXEC @resultcode = sp_OACreate 'SMTPsvg.Mailer', @oMail OUT
 
  if @resultcode = 0
    BEGIN
     EXEC @resultcode = sp_OASetProperty @oMail, 'RemoteHost', @mailserver
     EXEC @resultcode = sp_OASetProperty @oMail, 'FromName', @SenderName
     EXEC @resultcode = sp_OASetProperty @oMail, 'FromAddress',
                        @SenderAddress
     EXEC @resultcode = sp_OAMethod @oMail, 'AddRecipient', NULL, 
                        @RecipientName, @RecipientAddress
     EXEC @resultcode = sp_OASetProperty @oMail, 'Subject', @Subject
     EXEC @resultcode = sp_OASetProperty @oMail, 'BodyText', @Body 
 
     EXEC @resultcode = sp_OAMethod @oMail, 'SendMail', NULL

     EXEC sp_OADestroy @oMail
    END 
 
  SET nocount off
END
GO

SQL Server blocked access to procedure 'sys.sp_OACreate'



           Error: SQL Server blocked access to procedure 'sys.sp_OACreate' of component              Ole Automation Procedures' because this component is turned off as part of the
           security configuration for this server. 

           A system administrator can enable the use of 'Ole Automation Procedures' by using sp_configure. For more information about enabling 'Ole Automation Procedures', see "Surface Area Configuration" in SQL Server Books Online. 
I got this error today. 
Way to solve it is to go into 

SQL 2005 surface area configuration -> For Features -> OLE Automation -> Enable OLE automation. 

OR u can use the following commands.

sp_configure 'show advanced options', 1
GO 

RECONFIGURE
GO 

sp_configure 'Ole Automation Procedures', 1
GO 

RECONFIGURE
GO