SQL Server:发送电子邮件

时间:2011-09-01 02:14:04

标签: sql-server email

我想使用SQL Server发送电子邮件,并从互联网上找到两种可能的方式:

  1. 使用AOSMTP.Mail

    Create PROCEDURE [dbo].[RC_SendEmail]  @ServerAddr varchar(80),
       @FromAddr varchar(80), 
       @Recipient varchar(80), 
       @Subject varchar(132),
       @BodyText varchar(2000)
    
    AS
      DECLARE @hr int
      DECLARE @oSmtp int
      DECLARE @nRet int
    
      EXEC @hr = sp_OACreate 'AOSMTP.Mail',@oSmtp OUT
      EXEC @hr = sp_OASetProperty @oSmtp, 'RegisterKey', 'replace this text by your key'
      EXEC @hr = sp_OASetProperty @oSmtp, 'ServerAddr', @ServerAddr
      EXEC @hr = sp_OASetProperty @oSmtp, 'FromAddr', @FromAddr
      EXEC @hr = sp_OAMethod @oSmtp, 'AddRecipient', NULL, @Recipient, @Recipient, 0 
      EXEC @hr = sp_OASetProperty @oSmtp, 'Subject', @Subject 
      EXEC @hr = sp_OASetProperty @oSmtp, 'BodyText', @BodyText 
    
      EXEC @hr = sp_OAMethod @oSmtp, 'SendMail', @nRet OUT 
      EXEC @hr = sp_OADestroy @oSmtp
    
  2. 但是,此方法需要服务器地址。

    我应该输入的地址是什么?电子邮件服务器?还是数据库服务器? 我只看到它在互联网上使用'localhost'。但它对我不起作用。

    1. 使用CDONTS.NewMail

      CREATE PROCEDURE [dbo].[SendEmail] 
          @From varchar(100),
          @To varchar(100),
          @Subject varchar(100),
          @Body varchar(4000),
          @CC varchar(100) = null,
          @BCC varchar(100) = null
      AS
          Declare @MailID int
          Declare @hr int
          Declare @result int
      
          EXEC @hr = sp_OACreate 'CDONTS.NewMail', @MailID OUT
          EXEC @hr = sp_OASetProperty @MailID, 'From',@From
          EXEC @hr = sp_OASetProperty @MailID, 'Body', @Body
          EXEC @hr = sp_OASetProperty @MailID, 'BCC',@BCC
          EXEC @hr = sp_OASetProperty @MailID, 'CC', @CC
          EXEC @hr = sp_OASetProperty @MailID, 'Subject', @Subject
          EXEC @hr = sp_OASetProperty @MailID, 'To', @To
          EXEC @hr = sp_OAMethod @MailID, 'Send', @result OUT
          EXEC @hr = sp_OADestroy @MailID
          select @result
      
    2. 这个不需要服务器地址,但它也不起作用。

      任何人都可以详细解释这些以及我应该做些什么吗?

      非常感谢!!!

1 个答案:

答案 0 :(得分:7)

Forget that, use the send email capabilities built-in on SQL Server。它没有变得容易。

通过向导进行配置后,您可以在procs中执行此操作,如链接教程中所示:

USE msdb
GO
EXEC sp_send_dbmail @profile_name='PinalProfile',
@recipients='test@Example.com',
@subject='Test message',
@body='This is the body of the test message.'