Como enviar email sem usar o email SQL SQL Server

Traduções de Artigos Traduções de Artigos
Artigo: 312839 - Ver produtos para os quais este artigo se aplica.
Expandir tudo | Reduzir tudo

Nesta página

Sumário

SQL Mail fornece uma maneira fácil de enviar e ler emails de Microsoft SQL Server. No entanto, como SQL Mail é um aplicativo MAPI, um MAPI subsistema deve estar presente no servidor. Microsoft Windows NT 4.0 instala um Subsistema MAPI quando você instala o Windows Messaging. No entanto, Microsoft Windows 2000 não fornece um subsistema MAPI. Portanto, se você quiser usar o correio de SQL Você deve instalar um cliente MAPI como o Microsoft Outlook.

Você pode usar outros métodos para enviar email SMTP Simple Mail Transfer Protocol () diretamente do SQL Server. Por exemplo, você pode usar o Collaboration Data Objects para NT Server (CDONTS) ou colaboração dados objetos para Windows 2000 (CDOSYS) em combinação com o sp_OA SQL Server automação OLE procedimentos armazenados. Este artigo contém exemplos de como usar essas técnicas para enviar email para um Internet servidor de email. Você pode modificar as técnicas para que eles fornecem uma mais robusto sistema de endereçamento. Por exemplo, convém adicionar código de tratamento de erros. Os métodos nos exemplos não fornecem um meio para leitura ou para processamento de email.

Observação CDOSYS está disponível iniciando com o Windows 2000 e recomendamos Se você usar o CDOSYS em vez de CDONTS. CDONTS não é compatível com Windows Server 2003 e sistemas operacionais posteriores.

Observação Esses exemplos de programação ilustram técnicas que você pode usar para invocar o modelo de objeto CDO no Transact-SQL. Você é responsável por qualquer extensões de programação aos exemplos ou para qualquer estresse teste isto é necessário para executar o código em uma produção ambiente.

A Microsoft fornece exemplos de programação apenas para ilustração, sem garantia expressa ou implícita. Isso inclui, mas não é limitado a garantias implícitas de comercialização ou adequação para um determinado finalidade. Este artigo presume que você esteja familiarizado com a programação idioma que está sendo demonstrado e com as ferramentas usadas para criar e depurar procedimentos. Engenheiros de suporte da Microsoft podem ajudar a explicar a funcionalidade de um determinado procedimento, mas eles não modificarão esses exemplos para fornecer funcionalidade adicional ou construir procedimentos para atender às suas requisitos específicos.

Como usar o CDO para o Microsoft Windows NT Server (CDONTS)

CDONTS é um OLE específico do SMTP Simple Mail Transfer Protocol) Server é projetado especificamente para fornecer funcionalidade de mensagens para Aplicativos baseados na Web. Como tal, CDONTS suporta envio de email em HTML. Aplicativos com base em MAPI, como SQL Mail, não. Por padrão, o Microsoft Internet Information Server (IIS) 4.0 ou posterior, instala CDONTS. Por padrão, o Microsoft O Windows 2000 instala o Microsoft Internet Information Server (IIS) 5.0.

Para obter mais informações sobre CDONTS, clique no número de artigo abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
177850Qual é a diferença entre CDO 1.2 e CDONTS?
CDONTS envia email via SMTP para o local servidor. Se você não tiver um servidor SMTP no servidor local, você pode usar o Servidor virtual SMTP que instala o IIS para encaminhar seus emails SMTP para o servidor de email SMTP apropriado. Para usar o CDONTS para enviar email a partir de SQL Server Siga estas etapas:
  1. Instalar o IIS e em execução no computador que está a executando SQL Server.
  2. Especifique o servidor de email SMTP como o "host inteligente" para que o serviço IIS SMTP roteia automaticamente qualquer email SMTP que é enviado ao seu servidor local para seu servidor de email SMTP para entrega.
  3. Criar um procedimento armazenado em SQL Server que você pode usar para envie email.
Quando você usar o CDONTS em vez de SQL Mail, você não tem a ter um cliente de email como o Microsoft Outlook instalado no computador que está executando SQL Server. Você também precisa ter um Microsoft Exchange server. Você pode usar qualquer servidor de email que ofereça suporte a email SMTP como o "host inteligente". No entanto, você não pode ler e processar o email enviado para o computador que executando SQL Server usando CDONTS. Você também não pode substituir o funcionalidade de email do agente SQL.

Siga as instruções dependem no Microsoft Windows 2000. Se o IIS 4.0 estiver instalado no computador, você pode Configure o Microsoft Windows NT 4.0 da mesma forma. No entanto, as etapas serão diferentes um pouco.

Para obter mais informações sobre como configurar o "host inteligente" no Microsoft Windows NT 4.0, clique em seguinte número de artigo para ler o artigo na Base de dados de Conhecimento da Microsoft:
230235Como configurar o serviço IIS SMTP para retransmitir SMTP email

Configurar o Host inteligente

  1. Clique em Iniciar, aponte para programas, aponte para Ferramentas administrativase, em seguida
    Clique em Gerenciador de serviços de Internet para abrir o Gerenciador do IIS.
  2. Abra a árvore para o seu servidor. Botão direito do mouse o Servidor Virtual SMTP padrãoe clique em Propriedades.
  3. Localize a guia entrega e clique em Avançado.
  4. Digite o nome do seu servidor de email SMTP na caixa de texto Host inteligente . Se você não souber o nome do seu servidor de email SMTP Contate o administrador de email.
  5. Certifique-se de que o SMTP Simple Mail Transfer Protocol () executando o serviço. O serviço SMTP é parte do serviço IIS Admin. Portanto, também deve estar executando o serviço IIS Admin.

Criar um procedimento armazenado para enviar email CDONTS

Observação As empresas organizações, produtos, nomes de domínio endereços de email, logotipos, pessoas, lugares e eventos descritos neste artigo são fictícios. Nenhuma associação com qualquer empresa, organização, produto, nome de domínio, endereço de email, logotipo, pessoa, lugares ou eventos é intencional ou deve ser inferida.

Você pode usar código semelhante ao seguinte para criar um procedimento armazenado no banco de dados que envia email usando o SQL Server Automação de OLE procedimentos armazenados para invocar o modelo de objeto CDONTS.

CREATE PROCEDURE [dbo].[sp_send_cdontsmail] 
@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
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', NULL
EXEC @hr = sp_OADestroy @MailID

Em seguida, use o procedimento armazenado que você criou e fornecer o parâmetros corretos:
exec sp_send_cdontsmail 'someone@example.com','someone2@example.com','Test of CDONTS','It works'
Observação Somente membros da função de servidor fixa sysadmin podem executar os procedimentos de automação OLE armazenados. Se o usuário SQL Server não é um membro da função de servidor fixa sysadmin , você não pode usar o procedimento armazenado que é mencionada no exemplo para enviar email. Nessa situação, talvez você precise Desenvolva um aplicativo cliente para enviar emails com CDONTS. Por exemplo, você pode Use um aplicativo do Microsoft Visual Basic.

CDONTS envia um email para o servidor virtual SMTP local. O servidor roteia o email SMTP servidor de email especificado na caixa de texto Host inteligente . O servidor SMTP envia o email para o email endereço especificado no para: argumento ("someone2@example.com" no exemplo). O nome que especificado em de de: argumento
aparece como o remetente do email ("someone@example.com" neste exemplo) com o assunto "Teste de CDONTS" e a mensagem "funciona" como o corpo do email. Ninguém é copiada para o email porque você não forneceu um argumento para CC ou para o campo Cco .

Você pode modificar o exemplo para que ele enviará Email em HTML ou anexos. Para documentação sobre CDONTS, visite o seguinte Web site da Microsoft:
http://msdn.microsoft.com/Library
No painel esquerdo, expanda mensagens e colaboração, expanda Collaboration Data Objectse, em seguida, expanda CDO 1.2.1.

Você pode encontrar a documentação para o SQL Server OLE Procedimentos armazenados de automação no SQL Server 2000 Books Online.

Como usar o CDO para o Microsoft Windows 2000 (CDOSYS)

CDOSYS fornece um modelo de objeto para o desenvolvimento de mensagens aplicativos no Microsoft Windows 2000. Ele também fornece funcionalidade aprimorada sobre a biblioteca do CDO para Windows NT Server (CDONTS) existente. CDOSYS requer Windows 2000 e um local ou um servidor SMTP remoto.

Você pode configurar CDOSYS para apontar para servidores SMTP através de programação para dar aos desenvolvedores flexibilidade na configuração de servidores SMTP.

For mais informações sobre CDOSYS, clique no número abaixo para exibir o artigo na Base de dados de Conhecimento da Microsoft:
195683Relação entre bibliotecas CDO 1. x e CDOSYS.DLL
Porque CDOSYS pode enviar email para um SMTP remoto servidor, CDOSYS não exige que você tenha o Internet Information Server instalado e em execução no computador que está executando o SQL Server. Você também fazer não é necessário configurar o servidor virtual SMTP. Tudo o que você precisa fazer é criar um procedimento armazenado em SQL Server que você pode usar para enviar email.

Quando você usar o CDOSYS em vez de SQL Mail, você não tem um cliente de email como o Microsoft Outlook instalado no computador que está executando o SQL Server. Você também precisa ter um servidor Exchange. Você pode usar qualquer servidor de email que oferece suporte a email SMTP como seu servidor de email SMTP remoto. No entanto, não é possível ler ou processar o email é enviada para SQL Server se você usar o CDOSYS. Você também não é possível substituir a funcionalidade de email do agente SQL.

Uso de CDOSYS SQL Server automação OLE objeto depende SQL Server automação OLE para invocar o modelo de objeto CDOSYS. Isso foi testado com o serviço do SQL Server 2000 Pack 1 (SP1) e SQL Server 2000 Service Pack 2 (SP2). Microsoft não garantir que o CDOSYS pode ser chamado de procedimentos de automação OLE armazenados em versões do SQL Server que foram lançadas antes de SQL Server 2000 SP1.

Criar um procedimento armazenado para enviar correio CDOSYS

Você pode usar código semelhante ao seguinte para criar um armazenado o procedimento no seu banco de dados que envia email usando o SQL Server automação OLE procedimentos armazenados para invocar o modelo de objeto CDOSYS.

Neste exemplo, fornecemos um grau opcional de erro tratamento para verificar o hresult de cada instrução EXEC sp_OA * . Se o hresult (@hr) for zero, a instrução sp_OA * anterior foi um sucesso. No entanto, se esse hresult é diferente de zero, a instrução sp_OA * anterior falhou.

Para cada falha hresult diferente de zero, um linha é inserida na tabela [dbo].[cdosysmail_failures] que observa o local e hora da falha. Além disso, o último erro é interpretado usando o procedimento sp_OAGetErrorInfo armazenados para informar a origem e a descrição do erro. Esse erro Descrição da conexão de cliente é impresso. Também descrição do erro, hora e o local de falha são inseridos na tabela [dbo].[cdosysmail_failures] no banco de dados para que você possa identificar e diagnosticar falhas após o fato.

Se o procedimento sp_OAGetErrorInfo armazenados próprio falhar, o exemplo imprime a seguinte mensagem de erro para a conexão do cliente:

sp_OAGetErrorInfo Falha
-- drop old cdosysmail_failures table if exists
IF (EXISTS (SELECT * FROM dbo.sysobjects WHERE name = N'cdosysmail_failures' AND type='U')) DROP TABLE [dbo].[cdosysmail_failures]
GO
-- Create new cdosysmail_failures table
CREATE TABLE [dbo].[cdosysmail_failures]
		([Date of Failure] datetime, 
		[Spid] int NULL,
		[From] varchar(100) NULL,
		[To] varchar(100) NULL,
		[Subject] varchar(100) NULL,
		[Body] varchar(4000) NULL,
		[iMsg] int NULL,
		[Hr] int NULL,
		[Source of Failure] varchar(255) NULL,
		[Description of Failure] varchar(500) NULL,
		[Output from Failure] varchar(1000) NULL,
		[Comment about Failure] varchar(50) NULL)
GO

IF (EXISTS (SELECT * FROM dbo.sysobjects WHERE name = N'sp_send_cdosysmail' AND type='P')) DROP PROCEDURE [dbo].[sp_send_cdosysmail]
GO

	CREATE PROCEDURE [dbo].[sp_send_cdosysmail] 
	   @From varchar(100) ,
	   @To varchar(100) ,
	   @Subject varchar(100)=" ",
	   @Body varchar(4000) =" "
	/*********************************************************************
	
	This stored procedure takes the parameters and sends an e-mail. 
	All the mail configurations are hard-coded in the stored procedure. 
	Comments are added to the stored procedure where necessary.
	References to the CDOSYS objects are at the following MSDN Web site:
	http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cdosys/html/_cdosys_messaging.asp
	
	***********************************************************************/ 
	   AS
	   Declare @iMsg int
	   Declare @hr int
	   Declare @source varchar(255)
	   Declare @description varchar(500)
	   Declare @output varchar(1000)
	
	--************* Create the CDO.Message Object ************************
	   EXEC @hr = sp_OACreate 'CDO.Message', @iMsg OUT
	   IF @hr <>0 
	     BEGIN
	       SELECT @hr
	       INSERT INTO [dbo].[cdosysmail_failures] VALUES (getdate(), @@spid, @From, @To, @Subject, @Body, @iMsg, @hr, @source, @description, @output, 'Failed at sp_OACreate')
	       EXEC @hr = sp_OAGetErrorInfo NULL, @source OUT, @description OUT
	       IF @hr = 0
	         BEGIN
	           SELECT @output = '  Source: ' + @source
	           PRINT  @output
	           SELECT @output = '  Description: ' + @description
	           PRINT  @output
                   INSERT INTO [dbo].[cdosysmail_failures] VALUES (getdate(), @@spid, @From, @To, @Subject, @Body, @iMsg, @hr, @source, @description, @output, 'sp_OAGetErrorInfo for sp_OACreate')
                   RETURN
	         END
	       ELSE
	         BEGIN
	           PRINT '  sp_OAGetErrorInfo failed.'
	           RETURN
	         END
	     END
	
	--***************Configuring the Message Object ******************
	-- This is to configure a remote SMTP server.
	-- http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cdosys/html/_cdosys_schema_configuration_sendusing.asp
	   EXEC @hr = sp_OASetProperty @iMsg, 'Configuration.fields("http://schemas.microsoft.com/cdo/configuration/sendusing").Value','2'
	   IF @hr <>0 
	     BEGIN
	       SELECT @hr
	       INSERT INTO [dbo].[cdosysmail_failures] VALUES (getdate(), @@spid, @From, @To, @Subject, @Body, @iMsg, @hr, @source, @description, @output, 'Failed at sp_OASetProperty sendusing')
	       EXEC @hr = sp_OAGetErrorInfo NULL, @source OUT, @description OUT
	       IF @hr = 0
	         BEGIN
	           SELECT @output = '  Source: ' + @source
	           PRINT  @output
	           SELECT @output = '  Description: ' + @description
	           PRINT  @output
                   INSERT INTO [dbo].[cdosysmail_failures] VALUES (getdate(), @@spid, @From, @To, @Subject, @Body, @iMsg, @hr, @source, @description, @output, 'sp_OAGetErrorInfo for sp_OASetProperty sendusing')
                   GOTO send_cdosysmail_cleanup
	         END
	       ELSE
	         BEGIN
	           PRINT '  sp_OAGetErrorInfo failed.'
	           GOTO send_cdosysmail_cleanup
	         END
	     END
	-- This is to configure the Server Name or IP address. 
	-- Replace MailServerName by the name or IP of your SMTP Server.
	   EXEC @hr = sp_OASetProperty @iMsg, 'Configuration.fields("http://schemas.microsoft.com/cdo/configuration/smtpserver").Value', cdoSMTPServerName 
	   IF @hr <>0 
	     BEGIN
	       SELECT @hr
	       INSERT INTO [dbo].[cdosysmail_failures] VALUES (getdate(), @@spid, @From, @To, @Subject, @Body, @iMsg, @hr, @source, @description, @output, 'Failed at sp_OASetProperty smtpserver')
	       EXEC @hr = sp_OAGetErrorInfo NULL, @source OUT, @description OUT
	       IF @hr = 0
	         BEGIN
	           SELECT @output = '  Source: ' + @source
	           PRINT  @output
	           SELECT @output = '  Description: ' + @description
	           PRINT  @output
  	  	   INSERT INTO [dbo].[cdosysmail_failures] VALUES (getdate(), @@spid, @From, @To, @Subject, @Body, @iMsg, @hr, @source, @description, @output, 'sp_OAGetErrorInfo for sp_OASetProperty smtpserver')
                   GOTO send_cdosysmail_cleanup
	         END
	       ELSE
	         BEGIN
	           PRINT '  sp_OAGetErrorInfo failed.'
	           GOTO send_cdosysmail_cleanup
	         END
	     END
	
	-- Save the configurations to the message object.
	   EXEC @hr = sp_OAMethod @iMsg, 'Configuration.Fields.Update', null
	   IF @hr <>0 
	     BEGIN
	       SELECT @hr
	       INSERT INTO [dbo].[cdosysmail_failures] VALUES (getdate(), @@spid, @From, @To, @Subject, @Body, @iMsg, @hr, @source, @description, @output, 'Failed at sp_OASetProperty Update')
	       EXEC @hr = sp_OAGetErrorInfo NULL, @source OUT, @description OUT
	       IF @hr = 0
	         BEGIN
	           SELECT @output = '  Source: ' + @source
	           PRINT  @output
	           SELECT @output = '  Description: ' + @description
	           PRINT  @output
  	  	   INSERT INTO [dbo].[cdosysmail_failures] VALUES (getdate(), @@spid, @From, @To, @Subject, @Body, @iMsg, @hr, @source, @description, @output, 'sp_OAGetErrorInfo for sp_OASetProperty Update')                 
		   GOTO send_cdosysmail_cleanup
	         END
	       ELSE
	         BEGIN
	           PRINT '  sp_OAGetErrorInfo failed.'
	           GOTO send_cdosysmail_cleanup
	         END
	     END
	
	-- Set the e-mail parameters.
	   EXEC @hr = sp_OASetProperty @iMsg, 'To', @To
	   IF @hr <>0 
	     BEGIN
	       SELECT @hr
	       INSERT INTO [dbo].[cdosysmail_failures] VALUES (getdate(), @@spid, @From, @To, @Subject, @Body, @iMsg, @hr, @source, @description, @output, 'Failed at sp_OASetProperty To')
	       EXEC @hr = sp_OAGetErrorInfo NULL, @source OUT, @description OUT
	       IF @hr = 0
	         BEGIN
	           SELECT @output = '  Source: ' + @source
	           PRINT  @output
	           SELECT @output = '  Description: ' + @description
	           PRINT  @output
  	  	   INSERT INTO [dbo].[cdosysmail_failures] VALUES (getdate(), @@spid, @From, @To, @Subject, @Body, @iMsg, @hr, @source, @description, @output, 'sp_OAGetErrorInfo for sp_OASetProperty To')                 
                   GOTO send_cdosysmail_cleanup
	         END
	       ELSE
	         BEGIN
	           PRINT '  sp_OAGetErrorInfo failed.'
	           GOTO send_cdosysmail_cleanup
	         END
	     END

	   EXEC @hr = sp_OASetProperty @iMsg, 'From', @From
	   IF @hr <>0 
	     BEGIN
	       SELECT @hr
	       INSERT INTO [dbo].[cdosysmail_failures] VALUES (getdate(), @@spid, @From, @To, @Subject, @Body, @iMsg, @hr, @source, @description, @output, 'Failed at sp_OASetProperty From')
	       EXEC @hr = sp_OAGetErrorInfo NULL, @source OUT, @description OUT
	       IF @hr = 0
	         BEGIN
	           SELECT @output = '  Source: ' + @source
	           PRINT  @output
	           SELECT @output = '  Description: ' + @description
	           PRINT  @output
  	  	   INSERT INTO [dbo].[cdosysmail_failures] VALUES (getdate(), @@spid, @From, @To, @Subject, @Body, @iMsg, @hr, @source, @description, @output, 'sp_OAGetErrorInfo for sp_OASetProperty From')                 
                   GOTO send_cdosysmail_cleanup
	         END
	       ELSE
	         BEGIN
	           PRINT '  sp_OAGetErrorInfo failed.'
	           GOTO send_cdosysmail_cleanup
	         END
	     END

	   EXEC @hr = sp_OASetProperty @iMsg, 'Subject', @Subject
	   IF @hr <>0 
	     BEGIN
	       SELECT @hr
	       INSERT INTO [dbo].[cdosysmail_failures] VALUES (getdate(), @@spid, @From, @To, @Subject, @Body, @iMsg, @hr, @source, @description, @output, 'Failed at sp_OASetProperty Subject')
	       EXEC @hr = sp_OAGetErrorInfo NULL, @source OUT, @description OUT
	       IF @hr = 0
	         BEGIN
	           SELECT @output = '  Source: ' + @source
	           PRINT  @output
	           SELECT @output = '  Description: ' + @description
	           PRINT  @output
  	  	   INSERT INTO [dbo].[cdosysmail_failures] VALUES (getdate(), @@spid, @From, @To, @Subject, @Body, @iMsg, @hr, @source, @description, @output, 'sp_OAGetErrorInfo for sp_OASetProperty Subject')
                   GOTO send_cdosysmail_cleanup
	         END
	       ELSE
	         BEGIN
	           PRINT '  sp_OAGetErrorInfo failed.'
	           GOTO send_cdosysmail_cleanup
	         END
	     END
	
	-- If you are using HTML e-mail, use 'HTMLBody' instead of 'TextBody'.
	   EXEC @hr = sp_OASetProperty @iMsg, 'TextBody', @Body
	   IF @hr <>0 
	     BEGIN
	       SELECT @hr
	       INSERT INTO [dbo].[cdosysmail_failures] VALUES (getdate(), @@spid, @From, @To, @Subject, @Body, @iMsg, @hr, @source, @description, @output, 'Failed at sp_OASetProperty TextBody')
	       EXEC @hr = sp_OAGetErrorInfo NULL, @source OUT, @description OUT
	       IF @hr = 0
	         BEGIN
	           SELECT @output = '  Source: ' + @source
	           PRINT  @output
	           SELECT @output = '  Description: ' + @description
	           PRINT  @output
  	  	   INSERT INTO [dbo].[cdosysmail_failures] VALUES (getdate(), @@spid, @From, @To, @Subject, @Body, @iMsg, @hr, @source, @description, @output, 'sp_OAGetErrorInfo for sp_OASetProperty TextBody')
                   GOTO send_cdosysmail_cleanup
	         END
	       ELSE
	         BEGIN
	           PRINT '  sp_OAGetErrorInfo failed.'
	           GOTO send_cdosysmail_cleanup
	         END
	     END

	   EXEC @hr = sp_OAMethod @iMsg, 'Send', NULL
	   IF @hr <>0 
	     BEGIN
	       SELECT @hr
	       INSERT INTO [dbo].[cdosysmail_failures] VALUES (getdate(), @@spid, @From, @To, @Subject, @Body, @iMsg, @hr, @source, @description, @output, 'Failed at sp_OAMethod Send')
	       EXEC @hr = sp_OAGetErrorInfo NULL, @source OUT, @description OUT
	       IF @hr = 0
	         BEGIN
	           SELECT @output = '  Source: ' + @source
	           PRINT  @output
	           SELECT @output = '  Description: ' + @description
	           PRINT  @output
  	  	   INSERT INTO [dbo].[cdosysmail_failures] VALUES (getdate(), @@spid, @From, @To, @Subject, @Body, @iMsg, @hr, @source, @description, @output, 'sp_OAGetErrorInfo for sp_OAMethod Send')
                   GOTO send_cdosysmail_cleanup
	         END
	       ELSE
	         BEGIN
	           PRINT '  sp_OAGetErrorInfo failed.'
	           GOTO send_cdosysmail_cleanup
	         END
	     END
	

	-- Do some error handling after each step if you have to.
	-- Clean up the objects created.
        send_cdosysmail_cleanup:
	If (@iMsg IS NOT NULL) -- if @iMsg is NOT NULL then destroy it
	BEGIN
		EXEC @hr=sp_OADestroy @iMsg
	
		-- handle the failure of the destroy if needed
		IF @hr <>0 
	     	BEGIN
			select @hr
        	        INSERT INTO [dbo].[cdosysmail_failures] VALUES (getdate(), @@spid, @From, @To, @Subject, @Body, @iMsg, @hr, @source, @description, @output, 'Failed at sp_OADestroy')
	       		EXEC @hr = sp_OAGetErrorInfo NULL, @source OUT, @description OUT
	
			-- if sp_OAGetErrorInfo was successful, print errors
			IF @hr = 0
			BEGIN
				SELECT @output = '  Source: ' + @source
			        PRINT  @output
			        SELECT @output = '  Description: ' + @description
			        PRINT  @output
				INSERT INTO [dbo].[cdosysmail_failures] VALUES (getdate(), @@spid, @From, @To, @Subject, @Body, @iMsg, @hr, @source, @description, @output, 'sp_OAGetErrorInfo for sp_OADestroy')
			END
			
			-- else sp_OAGetErrorInfo failed
			ELSE
			BEGIN
				PRINT '  sp_OAGetErrorInfo failed.'
			        RETURN
			END
		END
	END
	ELSE 
	BEGIN
		PRINT ' sp_OADestroy skipped because @iMsg is NULL.'
		INSERT INTO [dbo].[cdosysmail_failures] VALUES (getdate(), @@spid, @From, @To, @Subject, @Body, @iMsg, @hr, @source, @description, @output, '@iMsg is NULL, sp_OADestroy skipped')
	        RETURN
	END

Em seguida, use o procedimento armazenado que você criou e fornecer o correto parâmetros.
   declare @Body varchar(4000)
   select @Body = 'This is a Test Message'
   exec sp_send_cdosysmail 'someone@example.com','someone2@example.com','Test of CDOSYS',@Body
Observação Somente membros da função de servidor fixa sysadmin podem executar os procedimentos de automação OLE armazenados. Se o usuário SQL Server não é um membro da função de servidor fixa sysadmin , você não pode usar o procedimento armazenado que é mencionada no exemplo para enviar email. Nessa situação, talvez você precise Desenvolva um aplicativo de cliente para enviar emails com CDOSYS. Por exemplo, você pode usar um aplicativo do Microsoft Visual Basic.

CDOSYS envia o email para o remoto servidor SMTP que é especificado como cdoSMTPServerName.

O servidor SMTP envia o email para o email endereço especificado no para: argumento ("someone2@example.com" neste exemplo). O nome que especificado em de de: argumento aparece como o remetente do email ("someone@example.com" neste exemplo).

Você pode modificar este exemplo para que ele envie um email com base em texto ou anexos. Para documentação sobre CDOSYS, visite o seguinte Microsoft Web site:
http://msdn.microsoft.com/Library
No painel esquerdo, expanda mensagens e colaboração, expanda Collaboration Data Objectse, em seguida, expanda CDO para Windows 2000.

Mais Informação

Sugerimos que você enviar um email usando o local Diretório de recebimento SMTP em vez de usar o nome de email SMTP remoto. O exemplo sp_send_cdosysmail armazenados procedimento executado em processo com SQL Server e será falha se o servidor SMTP está offline ou quebrados. Envio de email através do local diretório de recebimento requer apenas que o procedimento armazenado tem permissão para o diretório de recebimento. O servidor SMTP independentemente tratará o mail.

Para obter mais informações informações sobre como enviar email usando o diretório de recebimento local, clique em o número de artigo seguinte para visualizar o artigo na Microsoft Knowledge Base:
286430Como enviar HTML formatado email usando o CDO para Windows 2000 e o diretório de recebimento local

Propriedades

Artigo: 312839 - Última revisão: 15 de outubro de 2012 - Revisão: 1.0
A informação contida neste artigo aplica-se a:
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 7.0 Standard Edition
Palavras-chave: 
kbsqlsetup kbhowtomaster kbmt KB312839 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 312839

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com