Ako poslať e-mail bez použitia SQL Mail servera SQL Server

Preklady článku Preklady článku
ID článku: 312839 - Zobraziť produkty, ktorých sa tento článok týka.
Rozbaliť všetko | Zbaliť všetko

Na tejto stránke

Súhrn

SQL Mail poskytuje jednoduchý spôsob, ako odosielať a čítať e-mailu zo servera Microsoft SQL Server. Avšak, pretože SQL Mail je aplikácia rozhrania MAPI, MAPI subsystému musí byť prítomný na serveri. Microsoft Windows NT 4.0 nainštaluje MAPI podsystém pri inštalácii Windows Messaging. Avšak, Microsoft Windows 2000 neposkytuje MAPI subsystému. Preto, ak chcete používať SQL Mail, musíte nainštalovať klienta MAPI ako Microsoft Outlook.

Môžete použiť iné metódy poslať prenos protokolu SMTP (Simple Mail) e-mailu priamo z SQL Server. Napríklad môžete použiť Spolupracujúce údajové objekty pre NT Server (CDONTS) alebo Collaboration údajov objekty pre Windows 2000 (CDOSYS) v kombinácii s sp_OA SQL Server OLE automatizácie uložené postupy. Tento článok obsahuje príklady ako používať tieto techniky na odoslanie e-mailu internetový poštový server. Techniky môžete upraviť tak, že budú poskytovať viac robustný poštový systém. Napríklad, môžete pridať kód spracovania chýb. Metódy v príkladoch neposkytuje prostriedok pre čítanie alebo spracovanie e-mailov.

Poznámka: CDOSYS k dispozícii počnúc Windows 2000, a odporúčame vám použiť CDOSYS namiesto CDONTS. CDONTS nie je podporovaná systémom Windows Server 2003 a novších operačných systémoch.

Poznámka: Tieto programové príklady ilustrujú techník, ktoré môžete použiť na vyvolanie CDO objektového modelu v Transact-SQL. Ste zodpovední za žiadne programovanie rozšírení príkladov alebo akékoľvek stres testovanie, ktoré sú potrebné pre spustenie kódu v produkčnom prostredí.

Spoločnosť Microsoft poskytuje programovacie príklady, bez záruky, buď vyjadrené alebo implicitné. To zahŕňa vhodnosť pre konkrétny účel. Tento článok predpokladá, že ovládate predvádzaný programovací jazyk a nástroje, ktoré sa používajú na vytváranie a ladenie procedúr. Pracovníci technickej podpory spoločnosti Microsoft môžu pomôcť vysvetliť funkčnosť osobitného postupu, ale nemôžu tieto príklady poskytovať pridanú funkčnosť alebo výstavbe postupy zohľadňujúce vaše konkrétne požiadavky.

Ako používať spolupracujúce údajové objekty pre Microsoft Windows NT Server (CDONTS)

CDONTS je prenos protokolu SMTP (Simple Mail) špecifické server OLE, ktorý je špeciálne navrhnutý na poskytovanie správ funkcie Web-based aplikácií. Ako taký, CDONTS podporuje odosielanie HTML e-mailov. Aplikácií založených na MAPI, rovnako ako SQL Mail, nie. Štandardne sa program Microsoft Internet Information Server (IIS) 4.0 alebo novší, inštaluje CDONTS. V predvolenom nastavení inštaluje systém Microsoft Windows 2000 Microsoft Internet Information Server (IIS) 5.0.

Ďalšie informácie o CDONTS, po kliknutí na nasledovné číslo článku publikovaného v databáze Microsoft Knowledge Base:
177850 Aký je rozdiel medzi CDO 1.2 a CDONTS?
CDONTS odošle e-mailu cez SMTP lokálneho servera. Ak nemáte na vašom lokálnom serveri SMTP server, môžete použiť virtuálny server SMTP, ktorý služby IIS sa inštalujú na smerovanie SMTP e-mail na vhodný poštový server SMTP. Použitie CDONTS na odosielanie e-mailov zo servera SQL Server, postupujte nasledovne:
  1. Inštalácia služieb IIS a mať spustený v počítači, že isrunning servera SQL Server.
  2. Zadajte poštový server SMTP ako vaša "smart host", aby služby IIS SMTP automaticky nasmeruje SMTP e-maily, ktoré odosiela yourlocal server na váš poštový server SMTP pre dodávku.
  3. Vytvoriť uloženú procedúru v SQL Server, že môžete použiť tosend e-mail.
Keď použijete CDONTS namiesto SQL Mail, nie musíte mať ako mail klienta Microsoft Outlook nainštalovaný na počítači, ktorý je spustený server SQL Server. Tiež nemáte na serveri Microsoft Exchange. Môžete použiť akýkoľvek poštového servera, ktorý podporuje SMTP e-mail ako "smart host." Však nemôžete čítať a spracovávať e-mail odoslaný do počítača, ktorý je spustený server SQL Server pomocou CDONTS. Môžete tiež nemôže nahradiť funkcie SQL Agent poštu.

Postupujte podľa pokynov spoliehať na systém Microsoft Windows 2000. Ak je v počítači nainštalovaný program IIS 4.0, Microsoft Windows NT 4.0 môžete nakonfigurovať podobne. Avšak kroky budú mierne líšiť.

Ďalšie informácie o konfigurovaní "smart host" na Microsoft Windows NT 4.0, kliknutím na nasledujúce číslo článku čím zobrazíte článok v databáze Microsoft Knowledge Base:
230235 Ako konfigurovať službu IIS SMTP relé SMTP mail

Konfigurovať server Smart Host

  1. Kliknite na tlačidlo Štart, ukážte na položku programy, ukážte na Administratívne nástroje, a potom
    kliknite na položku Správca služby Internet Ak chcete otvoriť modul IIS Manager.
  2. Otvoriť strom pre váš server. Kliknite pravým tlačidlom myši Predvolené SMTP Virtual Servera potom kliknite na položku Vlastnosti.
  3. Vyhľadajte kartu doručenie , a potom kliknite na tlačidlo Spresniť.
  4. Zadajte názov servera SMTP mail v textovom poli Smart Host . Ak neviete názov váš SMTP mail servercontact správca pošty.
  5. Uistite sa, či je spustená služba prenos protokolu SMTP (Simple Mail). Služba SMTP je súčasťou IIS Admin Service.Therefore, službu IIS Admin musí byť tiež spustený.

Vytvoriť uloženú procedúru poslať CDONTS E-Mail

Poznámka: Príklad spoločnosti, organizácie, produkty, doménových mien, e-mailové adresy, logá, ľudí, miestach a udalostiach opísaných v tomto článku sú vymyslené. Akákoľvek podobnosť so skutočnou spoločnosťou, organizácie, výrobku, doménové meno, e-mailovú adresu, loga, osoby, miesta alebo udalosti je určená alebo čisto náhodná.

Môžete použiť kód podobné nasledovnému vytvoriť uloženú procedúru v databáze, ktorá odosiela e-maily pomocou SQL Server OLE automatizácie uložené postupy na vyvolanie CDONTS objektový model.

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

Ďalej použiť uloženú procedúru, ktorú ste vytvorili a poskytnúť správne parametre:
exec sp_send_cdontsmail 'someone@example.com','someone2@example.com','Test of CDONTS','It works'
Poznámka: Iba členovia úlohu sysadmin pevné servera môžete spustiť automatizácie OLE uložené postupy. Ak používateľ SQL Server nie je členom úlohu sysadmin pevné servera, nemôžete použiť uloženú procedúru, ktorá je uvedená v príklade odosielanie e-mailov. V takejto situácii, budete musieť vyvinúť klientska aplikácia poslať e-mail s CDONTS. Napríklad, môžete použiť aplikáciu Microsoft Visual Basic.

CDONTS odošle e-mail na miestnej virtuálny server SMTP. Server potom nasmeruje e-mail na poštový server SMTP, ktorý je zadaný v textovom poli Smart Host . Poštový server SMTP mail odošle e-mailová adresa je zadaná v na: argument ("someone2@example.com" v príklade). Názov, ktorý je zadaný v z: tvrdenie
sa zobrazí ako odosielateľ pošty ("someone@example.com" v tomto príklade) s predmetom "Test CDONTS" správa "funguje" ako telo e-mailu. Nikto je skopírovaný na e-mail, pretože ste neposkytli argument pre CC alebo BCC oblasti.

Napríklad môžete zmeniť tak, že pošle e-mail vo formáte HTML alebo príloh. Dokumentácia o CDONTS, navštívte nasledovnú webovú lokalitu spoločnosti Microsoft:
http://MSDN.Microsoft.com/Library
Na ľavej table rozbaľte Messaging a spoluprácu, rozšíriť Spolupracujúce údajové objektya potom rozbaľte CDO 1.2.1.

Dokumentácia pre SQL Server OLE automatizácie uložené postupov môžete nájsť v SQL Server 2000 Books Online.

Ako používať spolupracujúce údajové objekty pre systém Microsoft Windows 2000 (CDOSYS)

CDOSYS poskytuje objektový model pre vývoj aplikácií výmeny správ v systéme Microsoft Windows 2000. To tiež poskytuje vylepšené funkcie cez existujúce spolupracujúce údajové objekty pre systém Windows NT Server (CDONTS) Knižnica. CDOSYS vyžaduje Windows 2000, a lokálny alebo vzdialený server SMTP.

Môžete nakonfigurovať CDOSYS poukázať na serveroch SMTP programovo aby vývojári flexibility pri konfigurácii serverov SMTP.

Ďalšie informácie o CDOSYS, po kliknutí na nasledovné číslo článku publikovaného v databáze Microsoft Knowledge Base:
195683 Vzťah medzi 1.x CDO knižnice a CDOSYS.DLL
Pretože CDOSYS môžete poslať e-mail na vzdialený server SMTP, CDOSYS nevyžaduje, že máte Internet Information Server nainštalovaný a spustený na počítači, ktorý je spustený server SQL Server. Tiež nemáte nastaviť virtuálny server SMTP. Všetko čo musíte urobiť, je vytvoriť uloženú procedúru v SQL Server, ktoré môžete použiť na odoslanie e-mailu.

Keď použijete CDOSYS namiesto SQL Mail, nie musíte mať ako mail klienta Microsoft Outlook nainštalovaný na počítači, ktorý je spustený server SQL Server. Tiež nemáte na serveri Exchange. Môžete použiť akýkoľvek poštového servera, ktorý podporuje SMTP mail ako vzdialený SMTP poštový server. Však nemôže čítať alebo spracovať e-mail odoslaný na server SQL Server Ak používate CDOSYS. Môžete tiež nemôže nahradiť funkcie SQL Agent poštu.

Pomocou SQL Server automatizácie OLE objekt z CDOSYS spolieha na SQL Server OLE automatizácie vyvolať CDOSYS objektový model. To bol testovaný s SQL Server 2000 Service Pack 1 (SP1) a SQL Server 2000 Service Pack 2 (SP2). Spoločnosť Microsoft nezaručuje, že CDOSYS môžu byť povolaní z automatizácie OLE uložené postupy na verziách servera SQL Server, ktoré boli vydané pred SQL Server 2000 SP1.

Vytvoriť uloženú procedúru na odosielanie CDOSYS

Môžete použiť kód podobné nasledovnému vytvoriť uloženú procedúru v databáze, ktorá odosiela e-maily pomocou SQL Server OLE automatizácie uložené postupy na vyvolanie CDOSYS objektový model.

V tejto vzorke, poskytujeme voliteľný stupeň chýb skontrolovať hresult EXEC sp_OA * výkaze. Ak hodnota hresult (@hr) je nula, predchádzajúce vyhlásenie sp_OA * bol úspech. Však ak je táto hodnota hresult nenulové, predchádzajúce vyhlásenie sp_OA * zlyhalo.

Pre každé zlyhanie nenulová hodnota hresult, riadok sa vkladá do tabuľky [dbo].[cdosysmail_failures], berie na vedomie, miesto a čas zlyhania. Okrem toho je interpretovaný poslednú chybu pomocou postupu sp_OAGetErrorInfo uložené správy zdrojom a Popis chyby. Že chyba Popis sa vytlačí na pripojenie klienta. Aj tento Popis chyby, čas a miesto poruchy sú vložené do tabuľky [dbo].[cdosysmail_failures] v databáze tak, že môžete identifikovať a diagnostikovať poruchy po faktu.

Ak sám sp_OAGetErrorInfo uložené postup zlyhá, príklad vypíše chybové hlásenie na pripojenie klienta:

sp_OAGetErrorInfo zlyhalo
-- 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

Ďalšie použiť uloženú procedúru, ktorú ste vytvorili a poskytnúť správne parametre.
   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
Poznámka: Iba členovia úlohu sysadmin pevné servera môžete spustiť automatizácie OLE uložené postupy. Ak používateľ SQL Server nie je členom v úlohu sysadmin pevné servera, nemôžete použiť uloženú procedúru, ktorá je uvedená v príklade odosielanie e-mailov. V takejto situácii, budete musieť vyvinúť klientska aplikácia poslať mail s CDOSYS. Napríklad, môžete použiť aplikáciu Microsoft Visual Basic.

CDOSYS odošle e-mail do vzdialenej poštový server SMTP, ktorý je zadaný ako cdoSMTPServerName.

Poštový server SMTP mail odošle e-mailová adresa je zadaná v na: argument ("someone2@example.com" v tomto príklade). Názov, ktorý je zadaný v z: tvrdenie sa zobrazí ako odosielateľ pošty ("someone@example.com" v tomto príklade).

Môžete upraviť tento príklad sa to poslať text e-mailovej alebo príloh. Dokumentácia o CDOSYS, navštívte nasledovnú webovú lokalitu spoločnosti Microsoft:
http://MSDN.Microsoft.com/Library
Na ľavej table rozbaľte Messaging a spoluprácu, rozbaľte Spolupracujúce údajové objektya potom rozbaľte položku Spolupracujúce údajové objekty pre Windows 2000.

Ďalšie informácie

Odporúčame, aby ste posielať e-maily pomocou lokálneho adresára SMTP vyzdvihnutie namiesto názvu vzdialenej pošty SMTP. Sp_send_cdosysmail vzorky uložené postup spustí v proces s SQL Server a zlyhá ak SMTP server je offline alebo zlomené. Odosielanie e-mailov prostredníctvom miestnych vyzdvihnutie adresára vyžaduje iba že uloženú procedúru má povolenie na vyzdvihnutie adresára. SMTP server sa samostatne zvládnuť mail.

Ďalšie informácie o tom, ako posielať e-maily pomocou lokálneho vyzdvihnutie adresára, kliknite na nasledovné číslo článku publikovaného v databáze Microsoft Knowledge Base:
286430 Ako poslať HTML formátovaný pošty pomocou Spolupracujúce údajové objekty pre Windows 2000 a vyzdvihnutie lokálneho adresára

Vlastnosti

ID článku: 312839 - Posledná kontrola: 22. júna 2014 - Revízia: 2.0
Informácie v tomto článku sa týkajú nasledujúcich produktov:
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 7.0 Standard Edition
Kľúčové slová: 
kbsqlsetup kbhowtomaster kbmt KB312839 KbMtsk
Strojovo preložené
DÔLEŽITÉ: Tento článok je preložený pomocou softvéru na strojový preklad od spoločnosti Microsoft a možno ho opraviť prostredníctvom technológie Community Translation Framework (CTF). Microsoft ponúka strojovo preložené články, články upravené komunitou aj články preložené prekladateľmi, aby zabezpečil prístup ku všetkým článkom databázy Knowledge Base vo viacerých jazykoch. Strojovo preložené články aj upravené články môžu obsahovať chyby týkajúce sa slovnej zásoby, syntaxe alebo gramatiky. Microsoft nenesie zodpovednosť za akékoľvek nepresnosti, chyby alebo škody spôsobené neprávnym prekladom obsahu alebo jeho použitím zo strany našich zákazníkov. Ďalšie informácie o technológii CTF nájdete na lokalite http://support.microsoft.com/gp/machine-translation-corrections/sk.
Pokiaľ chcete vidieť anglickú verziu článku, kliknite sem: 312839

Odošlite odozvu

 

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