SQL Server: отправка электронной почты - PullRequest
2 голосов
/ 01 сентября 2011

Я хочу использовать 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
    

Однако для этого метода требуется адрес сервера.

Какой адрес я должен ввести? почтовый сервер? или сервер базы данных? Я только вижу, что он использует «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
    

Этот адрес не требует адреса сервера, но он также не работает.

Может кто-нибудь объяснить более подробно об этом и что я должен делать?

Большое спасибо !!!

1 Ответ

7 голосов
/ 01 сентября 2011

Забудьте об этом, используйте встроенные в SQL Server возможности отправки электронной почты . Это не становится легче.

После того, как вы настроите его с помощью мастера, вы можете просто сделать это внутри ваших процедур, как показано в учебном руководстве:

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.'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...