Momentan sunteți offline, așteptați să vă reconectați la internet

Cum de a trimite poştă electronică fără a utiliza SQL Mail în SQL Server

IMPORTANT: Acest articol este tradus cu ajutorul software-ului Microsoft de traducere automată și poate fi corectat prin intermediul tehnologiei Community Translation Framework (CTF). Microsoft oferă articole traduse automat, post-editate de comunitate și articole traduse de oameni, pentru a permite accesul la toate articolele din Baza noastră de cunoștințe în mai multe limbi. Articolele traduse automat și post-editate pot conține greșeli de vocabular, sintaxă și/sau gramatică. Microsoft nu este responsabil de inexactitățile, erorile sau daunele cauzate de traducerea greșită a conținutului sau de utilizarea acestuia de către clienți. Găsiți mai multe informații despre traducerea în colaborare la http://support.microsoft.com/gp/machine-translation-corrections/ro.

Faceți clic aici pentru a vizualiza versiunea în limba engleză a acestui articol: 312839

ÎN ACEASTĂ ACTIVITATE

Rezumat
SQL Mail oferă o modalitate uşoară de a trimite şi a citi e-mail din Microsoft SQL Server. Cu toate acestea, deoarece SQL Mail este o aplicaţie de MAPI, un subsistem MAPI trebuie să fie prezente pe server. Microsoft Windows NT 4.0 instalează un subsistem MAPI atunci când instalaţi Windows Mesagerie. Cu toate acestea, Microsoft Windows 2000 nu oferă un subsistem MAPI. Prin urmare, dacă doriţi să utilizaţi SQL Mail, trebuie să instalaţi un client MAPI, cum ar fi Microsoft Outlook.

Puteţi utiliza alte metode pentru a trimite Simple Mail Transfer Protocol (SMTP) e-mail direct la SQL Server. De exemplu, puteţi utiliza obiecte acoperire de date colaborare pentru NT Server (CDONTS) sau colaborare date obiecte pentru Windows 2000 (CDOSYS) în combinaţie cu procedurile SQL Server OLE Automation stocate sp_OA . Acest articol conţine exemple de cum să utilizeze aceste tehnici pentru a trimite e-mail pentru un server de e-mail Internet. Aveţi posibilitatea să modificaţi tehnici, astfel încât să va oferi un sistem mai robust de discuţii. De exemplu, poate doriţi să adăugaţi eroare codul de manipulare. Metodele în exemplele oferă o modalitate de lectură sau pentru prelucrarea electronică.

Notă CDOSYS este disponibil incepand cu Windows 2000, şi vă recomandăm să utilizaţi CDOSYS în loc de CDONTS. CDONTS nu este acceptat cu Windows Server 2003 şi sisteme de operare mai târziu.

Notă Aceste exemple de programare ilustra tehnici care le puteţi utiliza pentru a invoca modelul de obiect CDO în Transact-SQL. Sunteţi responsabil pentru orice programare extensii exemplelor sau pentru orice stres de testare care este necesar pentru a rula cod într-un mediu de producţie.

Microsoft oferă exemple de programare pentru ilustrare numai, fără garanţie, fie explicite sau implicite. Aceasta include, dar nu se limitează la, garanţiile implicite de vandabilitate sau potrivire pentru un anumit scop. Acest articol presupune că sunteţi familiarizat cu limbajul de programare care este fiind demonstrată şi cu instrumente care sunt folosite pentru a crea şi pentru procedurile de depanare. Inginerii de suport Microsoft pot ajuta la explicarea funcţionalitatea de o procedură specială, dar ei nu va modifica aceste exemple pentru a oferi functionalitate a adăugat sau construi proceduri pentru a îndeplini cerinţele dumneavoastră specifice.

Cum să utilizaţi CDO pentru Microsoft Windows NT Server (CDONTS)

CDONTS este un simplu Mail Transfer Protocol (SMTP) specifice server OLE care este special conceput pentru a oferi mesagerie functionality la spre aplicație bazată pe web. Ca atare, CDONTS acceptă trimiterea e-mail bazate pe HTML. Aplicatii bazate pe MAPI, cum ar fi SQL Mail, nu. Implicit, Microsoft Internet Information Server (IIS) 4.0 sau ulterioară, se instalează CDONTS. Implicit, Microsoft Windows 2000 se instalează Microsoft Internet Information Server (IIS) 5.0.

Pentru mai multe informaţii despre CDONTS, faceţi clic pe următorul număr de articol pentru a vedea articolul în bază de cunoştinţe Microsoft:
177850 Care este diferenţa dintre CDO 1.2 şi CDONTS?
CDONTS trimite e-mail prin SMTP server locale. Dacă nu aveţi un server SMTP pe server local, utilizaţi SMTP virtual server care IIS instalează să distribuie poşta electronică SMTP la serverul de mail SMTP corespunzătoare. Pentru a utiliza CDONTS pentru a trimite e-mail de SQL Server, urmaţi aceşti paşi:
  1. Instala IIS şi să-l rulează pe computer isrunning că SQL Server.
  2. Specificați serverul tau de mail SMTP ca gazda dumneavoastra"inteligente" astfel încât serviciul de IIS SMTP rute automat orice SMTP e-mail care este trimis la yourlocal server pentru serverul tau de mail SMTP pentru livrare.
  3. Creaţi o procedură stocată în SQL Server that tu poţi folos tosend poştă electronică.
Atunci când utilizaţi CDONTS în loc de SQL Mail, nu trebuie să aveţi un client de mail cum ar fi Microsoft Outlook instalat pe computer care execută SQL Server. De asemenea, nu trebuie să aveţi un server Microsoft Exchange. Puteţi utiliza orice server de corespondenţă care acceptă poştă electronică SMTP ca gazda dumneavoastra"inteligente". Cu toate acestea, nu puteţi citi şi procesul de e-mail care este trimis la computer care execută SQL Server folosind CDONTS. De asemenea, nu poate înlocui funcţionalitatea de Mail de Agent SQL.

Instrucţiunile care urmează se bazează pe Microsoft Windows 2000. Dacă IIS 4.0 este instalat pe computer, puteţi configura Microsoft Windows NT 4.0 în mod similar. Cu toate acestea, paşii va diferă uşor.

Pentru mai multe informaţii despre cum să configuraţi gazdă"inteligente" pe Microsoft Windows NT 4.0, faceţi clic pe următorul număr de articol pentru a vedea articolul în bază de cunoştinţe Microsoft:
230235 Cum să configuraţi serviciul de IIS SMTP pentru a releu SMTP poştă

Configuraţi gazdă inteligentă

  1. Faceţi clic pe Start, indicaţi spre programe, indicați spre Instrumente de administrare, şi apoi
    faceţi clic pe Internet Services Manager pentru a deschide IIS Manager.
  2. Deschideţi arborele pentru server-ul dvs. Implicit SMTP Virtual Server, şi apoi atunci pocnitură Properties.
  3. Localizaţi fila livrare şi apoi faceţi clic pe avansat.
  4. Tastaţi nume de sign-in serverului SMTP poştă în caseta de text Cu gazdă inteligentă . Dacă nu ştiţi nume de sign-in dumneavoastră SMTP poştă servercontact administratorul de poştă.
  5. Asiguraţi-vă că se execută serviciul Simple Mail Transfer Protocol (SMTP). Serviciul SMTP este parte a IIS Admin Service.Therefore, IIS Admin serviciul, de asemenea, trebuie să se execute.

Creaţi o procedură stocată pentru a trimite CDONTS E-Mail

Notă Exemplele de firme, organizaţii, produse, nume de domenii, adresele de poştă electronică, logo-uri, oameni, locuri, şi evenimentele descrise în acest articol sunt fictive. Este destinat şi trebuie dedusă nici o asociere cu orice companie reală, organizaţie, produs, nume de domeniu, adresă de poştă electronică, logo-ul, persoana, locuri sau evenimente.

Utilizaţi cod, care este similar cu următorul pentru a crea o procedură stocată în baza acoperire de date care trimite e-mail folosind procedurile SQL Server OLE Automation stocate pentru a invoca modelul de obiect 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) = nullASDeclare @MailID intDeclare @hr intEXEC @hr = sp_OACreate 'CDONTS.NewMail', @MailID OUTEXEC @hr = sp_OASetProperty @MailID, 'From',@FromEXEC @hr = sp_OASetProperty @MailID, 'Body', @BodyEXEC @hr = sp_OASetProperty @MailID, 'BCC',@BCCEXEC @hr = sp_OASetProperty @MailID, 'CC', @CCEXEC @hr = sp_OASetProperty @MailID, 'Subject', @SubjectEXEC @hr = sp_OASetProperty @MailID, 'To', @ToEXEC @hr = sp_OAMethod @MailID, 'Send', NULLEXEC @hr = sp_OADestroy @MailID

Apoi, utilizaţi procedura stocată creat şi oferi parametrii corect:
exec sp_send_cdontsmail 'someone@example.com','someone2@example.com','Test of CDONTS','It works'
Notă Numai membrii rolului fix server sysadmin pot executa proceduri OLE Automation stocate. Dacă utilizatorul SQL Server nu este un membru al rolului sysadmin fixe server, se poate utiliza procedura stocată care este menţionat în exemplul de a trimite poştă electronică. În astfel de situaţii, trebuie să dezvolte o aplicaţie client pentru a trimite e-mail cu CDONTS. De exemplu, puteţi utiliza o aplicaţie Microsoft Visual Basic.

CDONTS trimite mesajul de poştă electronică locale SMTP virtual server. Server apoi rutează e-mail la serverul de mail SMTP specificat în caseta de text Cu gazdă inteligentă . Serverul de mail SMTP trimite mail la adresa de e-mail specificată în la: argumentul ("someone2@example.com" în exemplu). nume de sign-in specificat în la: argument
apare ca expeditor de e-mail ("someone@example.com" în acest exemplu) cu subiectul "Test de CDONTS" şi mesajul "funcţionează" ca organism de e-mail. Nimeni nu este copiat pe e-mail pentru că ai furnizează un argument pentru CC sau pentru câmpul BCC .

Aveţi posibilitatea să modificaţi exemplu, astfel încât acesta va trimite poştă electronică bazate pe HTML sau ataşări. Pentru documentare despre CDONTS, vizitaţi următorul site Web Microsoft: În panou din partea stângă, extinde mesagerie si colaborare, extindeţi Obiectele acoperire de date colaborare, şi apoi atunci expand CDO 1.2.1.

Puteţi găsi documentaţie pentru procedurile SQL Server OLE Automation stocate în SQL Server 2000 carti Online.

back to the top

Cum să utilizaţi CDO pentru Microsoft Windows 2000 (CDOSYS)

CDOSYS oferă un model obiect pentru a dezvolta aplicaţii de mesagerie Microsoft Windows 2000. Acesta oferă, de asemenea, funcţionalitate sporită peste existente Biblioteca CDO pentru Windows NT Server (CDONTS). CDOSYS necesită Windows 2000, şi un local sau un server SMTP.

Puteţi configura CDOSYS pentru a indica spre fermă de servere SMTP programatic să dea dezvoltatorii flexibilitate în configurarea fermă de servere SMTP.

Pentru mai multe informaţii despre CDOSYS, faceţi clic pe următorul număr de articol pentru a vedea articolul în bază de cunoştinţe Microsoft:
195683 Relaţia dintre biblioteci de CDO 1.x şi CDOSYS.DLL
Deoarece CDOSYS pot trimite e-mail la un server SMTP de la distanţă, CDOSYS nu are nevoie ca aveti Internet Information Server instalat şi rulează pe computerul care execută SQL Server. De asemenea, nu trebuie să configuraţi serverul SMTP virtual. Tot ce trebuie să faceţi este să creaţi o procedură stocată în SQL Server care se pot utiliza pentru a trimite e-mail.

Atunci când utilizaţi CDOSYS în loc de SQL Mail, nu trebuie să aveţi un client de mail cum ar fi Microsoft Outlook instalat pe computer care execută SQL Server. De asemenea, nu trebuie să aveţi un server Exchange. Puteţi utiliza orice server de corespondenţă care acceptă SMTP poştă ca serverul de mail SMTP la distanţă. Cu toate acestea, nu poate citi sau procesul de e-mail care este trimis la SQL Server, dacă utilizaţi CDOSYS. De asemenea, nu poate înlocui funcţionalitatea de Mail de Agent SQL.

Utilizarea CDOSYS cu obiect SQL Server OLE Automation se bazeaza pe SQL Server OLE Automation să invoce modelul de obiect CDOSYS. Acest lucru a fost testat cu SQL Server 2000 pachet Service Pack 1 (SP1) şi SQL Server 2000 pachet Service Pack 2 (SP2). Microsoft nu garantează că CDOSYS poate fi apelat din procedurile OLE Automation stocate pe versiunile de SQL Server care au fost lansate înainte de SQL Server 2000 SP1.

Creaţi o procedură stocată pentru a trimite CDOSYS Mail

Utilizaţi cod, care este similar cu următorul pentru a crea o procedură stocată în baza acoperire de date care trimite e-mail folosind procedurile SQL Server OLE Automation stocate pentru a invoca modelul de obiect CDOSYS.

În acest eşantion, oferim un grad opţional de eroare de manipulare a verifica hresult de fiecare declaraţie EXEC sp_OA * . Dacă hresult (@hr) este zero, sp_OA * declaraţia anterioară a fost un succes. Cu toate acestea, dacă acea hresult este nenul, sp_OA * declaraţia anterioară nu a reuşit.

Pentru fiecare eşec hresult nenul, un rând se inserează în tabel [dbo].[cdosysmail_failures] care ia act de locul şi momentul de eşec. În plus, ultima eroare este interpretată prin utilizarea sp_OAGetErrorInfo stocate procedură să raporteze sursă şi Descrierea erorii. Această descriere de eroare este tipărit la conexiune client. De asemenea, această descriere de eroare, marcă de timp şi loc de eşec sunt inserate în tabelul [dbo].[cdosysmail_failures] in baza acoperire de date astfel încât să puteţi identifica şi diagnostica eşecuri după fapt.

Dacă procedura sp_OAGetErrorInfo stocate în sine nu reuşeşte, exemplu imprimă următorul mesaj de eroare în conexiune client:

sp_OAGetErrorInfo nu a reușit
-- drop old cdosysmail_failures table if existsIF (EXISTS (SELECT * FROM dbo.sysobjects WHERE name = N'cdosysmail_failures' AND type='U')) DROP TABLE [dbo].[cdosysmail_failures]GO-- Create new cdosysmail_failures tableCREATE 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)GOIF (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
Apoi, utilizaţi procedura stocată creat şi oferi parametrii corect.
   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
Notă Numai membrii rolului fix server sysadmin pot executa proceduri OLE Automation stocate. Dacă utilizatorul dumneavoastră SQL Server nu este un membru al rolului sysadmin fixe server, se poate utiliza procedura stocată care este menţionat în exemplul de a trimite poştă electronică. În astfel de situaţii, trebuie să dezvolte o aplicaţie client pentru a trimite mail cu CDOSYS. De exemplu, puteţi utiliza o aplicaţie Microsoft Visual Basic.

CDOSYS trimite e-mail la distanţă SMTP server de mail, care este specificat ca cdoSMTPServerName.

Serverul de mail SMTP trimite mail la adresa de e-mail specificată în la: argumentul ("someone2@example.com" în acest exemplu). nume de sign-in specificat în la: argumentul apare ca expeditor de e-mail ("someone@example.com" în acest exemplu).

Aveţi posibilitatea să modificaţi acest exemplu pentru a trimite text-bază poştă electronică sau ataşări. Pentru documentare despre CDOSYS, vizitaţi următorul site Web Microsoft: În panou din partea stângă, extinde mesagerie si colaborare, extindeţi Obiectele acoperire de date colaborare, şi apoi atunci expand CDO pentru Windows 2000.

back to the top
Informaţii suplimentare
Am sugera că trimite e-mail utilizând directorul local pickup SMTP folosind nume de sign-in de mail SMTP la distanţă. Proba de sp_send_cdosysmail stocate procedură se execută în proces cu SQL Server şi nu va reuşi dacă serverul SMTP este offline sau rupte. Trimiterea de e-mail prin director local pickup numai impune ca procedura stocată a permisiunea de la directorul de preluare. Serverul SMTP se va ocupa în mod independent de mail.

Pentru mai multe informaţii despre cum să trimiteţi mail folosind director local pickup, faceţi clic pe următorul număr de articol pentru a vedea articolul în bază de cunoştinţe Microsoft:
286430 Cum de a trimite HTML formatat mail folosind CDO pentru Windows 2000 şi director local pickup
POP3 internet lotus notes novell groupwise

Avertisment: acest articol a fost tradus automat

Proprietăți

ID articol: 312839 - Ultima examinare: 06/24/2014 04:47:00 - Revizie: 2.0

Microsoft SQL Server 2000 Standard Edition, Microsoft SQL Server 7.0 Standard Edition

  • kbsqlsetup kbhowtomaster kbmt KB312839 KbMtro
Feedback