Làm th? nào đ? g?i b?c e-mail mà không s? d?ng SQL thư trong SQL Server

D?ch tiêu đ? D?ch tiêu đ?
ID c?a bài: 312839 - Xem s?n ph?m mà bài này áp d?ng vào.
Bung t?t c? | Thu g?n t?t c?

? Trang này

Tóm t?t

SQL thư cung c?p m?t cách d? dàng đ? g?i và đ?c b?c e-mail Microsoft SQL Server. Tuy nhiên, v? SQL thư là m?t ?ng d?ng MAPI, m?t MAPI H? th?ng con ph?i có m?t trên máy ch?. Microsoft Windows NT 4.0 cài đ?t chuyên bi?t m?t MAPI h? th?ng khi b?n cài đ?t chuyên bi?t Windows thư thoại tin t?c th?i. Tuy nhiên, Microsoft Windows năm 2000 không cung c?p m?t h? th?ng ph? MAPI. V? v?y, n?u b?n mu?n s? d?ng SQL thư, b?n ph?i cài đ?t chuyên bi?t m?t máy tính khách MAPI như Microsoft Outlook.

B?n có th? s? d?ng Các phương pháp khác đ? g?i đơn gi?n Transfer Protocol (SMTP) thư e-mail tr?c ti?p t? SQL Server. Ví d?, b?n có th? s? d?ng h?p tác d? li?u đ?i tư?ng NT Server (CDONTS) ho?c h?p tác d? li?u đ?i tư?ng cho Windows 2000 (CDOSYS) k?t h?p v?i sp_OA t? đ?ng SQL Server OLE hóa lưu tr? th? t?c. Bài vi?t này ch?a các ví d? v? cách s? d?ng các k? thu?t đ? g?i e-mail đ?n m?t Internet máy ch? thư. B?n có th? s?a đ?i các k? thu?t như v?y r?ng h? s? cung c?p thêm m?t H? th?ng g?i thư m?nh m?. Ví d?, b?n có th? mu?n thêm l?i x? l? m?. Các phương pháp trong các ví d? không cung c?p m?t phương ti?n đ? đ?c ho?c cho x? l? b?c e-mail.

Lưu ? CDOSYS có B?t đ?u v?i Windows 2000, và chúng tôi khuyên b?n nên r?ng b?n s? d?ng CDOSYS thay v? CDONTS. CDONTS không đư?c h? tr? v?i các c?a s? Server 2003 và sau đó đi?u hành h? th?ng.

Lưu ? Nh?ng l?p tr?nh ví d? minh h?a k? thu?t mà b?n có th? s? d?ng đ? g?i các mô h?nh đ?i tư?ng CDO trong Transact-SQL. B?n có trách nhi?m cho b?t k? Ti?n ích m? r?ng chương tr?nh v?i các ví d?, ho?c cho b?t k? căng th?ng th? nghi?m đó là yêu c?u đ? ch?y m? trong s?n xu?t m?t môi trư?ng.

Microsoft cung c?p chương tr?nh ví d? đ? minh ho? mà không có b?o đ?m, bày t? hay ng? ?. Đi?u này bao g?m, nhưng không gi?i h?n đ? b?o đ?m ng? ? c?a bán ho?c phù h?p cho m?t đ?c bi?t m?c đích. Bài vi?t này gi? đ?nh r?ng b?n đang quen thu?c v?i các chương tr?nh ngôn ng? đư?c ch?ng minh và v?i các công c? đư?c s? d?ng đ? t?o ra và đ? g? l?i các th? t?c. Microsoft h? tr? k? sư có th? giúp gi?i thích các Các ch?c năng c?a m?t th? t?c c? th?, nhưng h? s? không thay đ?i nh?ng Các ví d? đ? cung c?p thêm ch?c năng ho?c xây d?ng các th? t?c đ? đáp ?ng c?a b?n Các yêu c?u c? th?.

Làm th? nào đ? s? d?ng CDO Microsoft Windows NT Server (CDONTS)

CDONTS là m?t đơn gi?n Transfer Protocol (SMTP) thư c? th? OLE máy ch? đ?c bi?t đư?c thi?t k? đ? cung c?p ch?c năng thư thoại tin t?c th?i ?ng d?ng d?a trên web. Như v?y, CDONTS h? tr? g?i email HTML d?a trên. ?ng d?ng d?a trên MAPI, như SQL Mail, không. theo m?c đ?nh, Microsoft Internet Information Server (IIS) 4.0 ho?c sau này, cài đ?t chuyên bi?t CDONTS. theo m?c đ?nh, Microsoft Windows 2000 cài đ?t chuyên bi?t Microsoft Internet Information Server (IIS) 5.0.

Đ? bi?t thêm chi ti?t v? CDONTS, b?m vào các s? bài vi?t sau đ? xem bài vi?t trong cơ s? ki?n th?c Microsoft:
177850S? khác bi?t gi?a CDO 1.2 và CDONTS là g??
CDONTS g?i b?c e-mail thông qua SMTP đ? các đ?a phương H? ph?c v?. N?u b?n không có m?t máy ch? SMTP trên máy ch? đ?a phương c?a b?n, b?n có th? s? d?ng các SMTP máy ch? ?o IIS cài đ?t chuyên bi?t đ? đ?nh tuy?n e-mail SMTP c?a b?n đ? các máy ch? thư SMTP thích h?p. S? d?ng CDONTS đ? g?i e-mail t? máy ch? SQL, th?c hi?n theo các bư?c sau:
  1. cài đ?t chuyên bi?t IIS và có nó đang ch?y trên máy tính là ch?y SQL Server.
  2. Ch? đ?nh Máy phục vụ thư SMTP c?a b?n như là máy ch? thông minh c?a b?n"" đ? Các b?n ghi d?ch v? IIS SMTP t? đ?ng tuy?n đư?ng b?t k? e-mail SMTP nào đư?c g?i đ?n c?a b?n đ?a phương máy ch? Máy phục vụ thư SMTP c?a b?n cho giao hàng.
  3. T?o m?t th? t?c d?ch s?n trong SQL Server mà b?n có th? s? d?ng đ? g?i e-mail.
Khi b?n s? d?ng CDONTS thay v? SQL thư, b?n không c?n ph?i có m?t ?ng d?ng thư như Microsoft Outlook cài đ?t chuyên bi?t trên máy tính là ch?y SQL Server. B?n c?ng không ph?i có m?t máy ch? Microsoft Exchange. B?n có th? s? d?ng b?t k? máy ch? thư nào h? tr? SMTP e-mail như c?a b?n máy ch? thông minh"." Tuy nhiên, b?n không th? đ?c và x? l? e-mail đư?c g?i đ?n máy tính mà đang ch?y SQL Server b?ng cách s? d?ng CDONTS. B?n c?ng không th? thay th? các ch?c năng c?a SQL đ?i l? thư.

Các hư?ng d?n theo d?a Khi Microsoft Windows 2000. N?u IIS 4.0 đư?c cài đ?t chuyên bi?t trên máy tính, b?n có th? c?u h?nh tương t? như Microsoft Windows NT 4.0. Tuy nhiên, các bư?c s? khác nhau m?t chút.

Cho bi?t thêm thông tin v? làm th? nào đ? c?u h?nh máy ch? thông minh"" trên Microsoft Windows NT 4.0, b?m vào đây s? bài vi?t đ? xem bài vi?t trong cơ s? ki?n th?c Microsoft:
230235Làm th? nào đ? c?u h?nh các b?n ghi d?ch v? IIS SMTP SMTP chuy?n ti?p thư

C?u h?nh máy ch? thông minh

  1. Nh?p vào B?t đ?u, đi?m đ?n chương tr?nh, đi?m đ?n Công c? qu?n tr?, và sau đó
    nh?p vào Tr?nh qu?n l? b?n ghi d?ch v? Internet đ? m? tr?nh qu?n l? IIS.
  2. M? cây cho máy ch? c?a b?n. B?m chu?t ph?i M?c đ?nh SMTP máy ch? ?o, và sau đó b?m thu?c tính.
  3. Xác đ?nh v? trí các tab giao hàng , và sau đó nh?p vào nâng cao.
  4. G? tên c?a Máy phục vụ thư SMTP c?a b?n trong h?p văn b?n Máy ch? thông minh . N?u b?n không bi?t tên c?a Máy phục vụ thư SMTP c?a b?n liên h? v?i ngư?i qu?n tr? thư c?a b?n.
  5. H?y ch?c ch?n r?ng các đơn gi?n Mail Transfer Protocol (SMTP) b?n ghi d?ch v? đang ch?y. b?n ghi d?ch v? SMTP là m?t ph?n c?a b?n ghi d?ch v? Admin IIS. Do đó, các b?n ghi d?ch v? IIS Admin ph?i c?ng ch?y.

T?o m?t th? t?c d?ch s?n đ? g?i b?c e-mail CDONTS

Lưu ? Ví d? công ty, t? ch?c, s?n ph?m, tên mi?n, đ?a ch? e-mail, bi?u trưng, ngư?i, đ?a đi?m và s? ki?n đư?c mô t? trong bài vi?t này là hư c?u. Không có liên k?t v?i b?t k? công ty th?c s?, t? ch?c, s?n ph?m, tên mi?n, đ?a ch? e-mail, bi?u trưng, ngư?i, đ?a đi?m, ho?c các s? ki?n đư?c thi?t k? ho?c nên đư?c suy ra.

B?n có th? s? d?ng m? s? đó là tương t? như sau đây đ? t?o ra m?t th? t?c d?ch s?n trong b? máy cơ s? d? li?u c?a b?n g?i email b?ng cách s? d?ng SQL Server OLE lưu tự động tr? các th? t?c đ? g?i các mô h?nh đ?i tư?ng 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

Ti?p theo, s? d?ng các th? t?c d?ch s?n mà b?n đ? t?o và cung c?p các thông s? chính xác:
exec sp_send_cdontsmail 'someone@example.com','someone2@example.com','Test of CDONTS','It works'
Lưu ? Ch? có các thành viên c?a Ilos c? đ?nh máy ch? vai tr? có th? ch?y các th? t?c t? đ?ng OLE hóa đư?c lưu tr?. N?u ngư?i s? d?ng SQL Server không ph?i là m?t thành viên c?a Ilos c? đ?nh máy ch? vai tr?, b?n không th? s? d?ng các th? t?c d?ch s?n là đ? c?p đ?n trong ví d? đ? g?i e-mail. Trong t?nh hu?ng như v?y, b?n có th? ph?i phát tri?n m?t ?ng d?ng khách hàng đ? g?i e-mail v?i CDONTS. Ví d?, b?n có th? s? d?ng m?t ?ng d?ng Microsoft Visual Basic.

CDONTS g?i email đ?n máy ch? ?o SMTP đ?a phương. H? ph?c v? sau đó tuy?n đư?ng e-mail đ?n SMTP máy ch? thư đư?c xác đ?nh trong h?p văn b?n Máy ch? thông minh . Máy phục vụ thư SMTP g?i thư đ?n e-mail đ?a ch? đư?c ch? đ?nh trong các đ?: đ?i s? ("someone2@example.com" trong ví d?). Tên mà đư?c ch? đ?nh trong các t?: đ?i s?
xu?t hi?n như là ngư?i g?i e-mail ("someone@example.com" trong ví d? này) v?i ch? đ? "Th? nghi?m c?a CDONTS" và thư "nó ho?t đ?ng" như là cơ quan c?a e-mail. Không ai đư?c sao chép trên các b?c e-mail v? b?n đ? không cung c?p m?t đ?i s? cho các CC ho?c trư?ng BCC .

B?n có th? s?a đ?i m?u đ? nó s? g?i D?a trên HTML e-mail ho?c ph?n đính kèm. Tài li?u v? CDONTS, truy c?p vào các Microsoft Web site sau:
http://MSDN.Microsoft.com/Library
Trong ngăn bên trái, m? r?ng, thư thoại tin t?c th?i và h?p tác, m? r?ng H?p tác d? li?u đ?i tư?ng, và sau đó m? r?ng CDO 1.2.1.

B?n có th? t?m th?y các tài li?u cho các SQL Server OLE lưu tự động tr? các th? t?c trong SQL Server 2000 sách tr?c tuy?n.

Làm th? nào đ? s? d?ng CDO Microsoft Windows 2000 (CDOSYS)

CDOSYS cung c?p m?t mô h?nh đ?i tư?ng đ? phát tri?n các tin thư thoại Các ?ng d?ng trên Microsoft Windows 2000. Nó c?ng cung c?p tính năng nâng cao trên thư vi?n hi?n có c?a CDO cho Windows NT Server (CDONTS). CDOSYS yêu c?u Windows 2000, và m?t đ?a phương ho?c m?t máy ch? SMTP t? xa.

B?n có th? đ?t c?u h?nh CDOSYS đ? tr? đ?n máy ch? SMTP l?p tr?nh đ? cung c?p cho các nhà phát tri?n s? linh ho?t trong c?u h?nh máy ch? SMTP.

Cho bi?t thêm thông tin v? CDOSYS, nh?p vào s? bài vi?t sau đ? xem các Bài vi?t trong cơ s? ki?n th?c Microsoft:
195683M?i quan h? gi?a 1.x CDO thư vi?n và CDOSYS.DLL
B?i v? CDOSYS có th? g?i e-mail đ?n m?t SMTP t? xa máy ch?, CDOSYS không đ?i h?i r?ng b?n có Internet thông tin máy ch? cài đ?t chuyên bi?t b?t lên và ch?y trên máy tính đang ch?y SQL Server. B?n c?ng làm không c?n ph?i c?u h?nh máy ch? ?o SMTP. T?t c? b?n ph?i làm là đ? t?o ra m?t th? t?c d?ch s?n trong SQL Server mà b?n có th? s? d?ng đ? g?i e-mail.

Khi b?n s? d?ng CDOSYS thay v? SQL thư, b?n không c?n ph?i có m?t ?ng d?ng thư như Microsoft Outlook cài đ?t chuyên bi?t trên máy tính đang ch?y SQL Server. B?n c?ng không ph?i có m?t máy ch? Exchange. B?n có th? s? d?ng b?t k? máy ch? thư h? tr? SMTP mail là Máy phục vụ thư SMTP t? xa c?a b?n. Tuy nhiên, b?n có th? không đ?c ho?c x? l? e-mail đư?c g?i đ?n máy ch? SQL, n?u b?n s? d?ng CDOSYS. B?n c?ng không th? thay th? các ch?c năng c?a SQL đ?i l? thư.

S? d?ng CDOSYS v?i t? đ?ng SQL Server OLE hóa đ?i tư?ng d?a trên SQL Server OLE Automation đ? g?i các mô h?nh đ?i tư?ng CDOSYS. Đi?u này đ? đư?c th? nghi?m v?i các b?n ghi d?ch v? SQL Server 2000 Pack 1 (SP1) và SQL Server 2000 Service Pack 2 (SP2). Microsoft không đ?m b?o r?ng CDOSYS có th? đư?c g?i t? các th? t?c t? đ?ng OLE hóa lưu tr? trên các phiên b?n c?a SQL Server, mà đ? đư?c phát hành trư?c khi SQL Server 2000 SP1.

T?o m?t th? t?c d?ch s?n đ? g?i thư CDOSYS

B?n có th? s? d?ng m? s? đó là tương t? như sau đây đ? t?o m?t lưu tr? các th? t?c trong c?a b?n b? máy cơ s? d? li?u g?i e-mail b?ng cách s? d?ng t? đ?ng SQL Server OLE hóa Các th? t?c d?ch s?n đ? g?i các mô h?nh đ?i tư?ng CDOSYS.

Trong m?u này, chúng tôi cung c?p m?t m?c đ? tùy ch?n l?i x? l? đ? ki?m tra hresult m?i EXEC sp_OA * tuyên b?. N?u hresult (@hr) là zero, trư?c sp_OA * tuyên b? là m?t thành công. Tuy nhiên, n?u hresult đó là nonzero, th?t b?i trư?c sp_OA * tuyên b?.

Cho m?i th?t b?i nonzero hresult, m?t hàng đư?c đưa vào b?ng [dbo].[cdosysmail_failures] mà ghi chú nơi và th?i gian c?a s? th?t b?i. Ngoài ra, các l?i cu?i cùng gi?i thích b?ng cách s? d?ng các th? t?c sp_OAGetErrorInfo lưu tr? đ? báo cáo các ngu?n và mô t? v? l?i. Có l?i Mô t? đư?c in đ? k?t n?i khách hàng. C?ng có mô t? l?i, th?i gian, và các đ?a đi?m c?a s? th?t b?i đư?c chèn vào b?ng [dbo].[cdosysmail_failures] trong b? máy cơ s? d? li?u đ? t? đó b?n có th? xác đ?nh và ch?n đoán th?t b?i sau khi th?c t?.

N?u sp_OAGetErrorInfo lưu tr? th? t?c chính th?t b?i, ví d? in thông báo l?i sau k?t n?i khách hàng:

sp_OAGetErrorInfo th?t b?i
-- 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

Ti?p theo, s? d?ng các th? t?c d?ch s?n mà b?n đ? t?o và cung c?p chính xác tham s?.
   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
Lưu ? Ch? có các thành viên c?a Ilos c? đ?nh máy ch? vai tr? có th? ch?y các th? t?c t? đ?ng OLE hóa đư?c lưu tr?. N?u ngư?i dùng SQL Server c?a b?n không ph?i là m?t thành viên c?a Ilos c? đ?nh máy ch? vai tr?, b?n không th? s? d?ng các th? t?c d?ch s?n là đ? c?p đ?n trong ví d? đ? g?i e-mail. Trong t?nh hu?ng như v?y, b?n có th? ph?i phát tri?n m?t ?ng d?ng khách hàng đ? g?i thư v?i CDOSYS. Ví d?, b?n có th? s? d?ng m?t ?ng d?ng Microsoft Visual Basic.

CDOSYS g?i e-mail đ?n các t? xa Máy phục vụ thư SMTP đư?c ch? đ?nh như cdoSMTPServerName.

Máy phục vụ thư SMTP g?i thư đ?n e-mail đ?a ch? đư?c ch? đ?nh trong các đ?: đ?i s? ("someone2@example.com" trong ví d? này). Tên mà đư?c ch? đ?nh trong các t?: đ?i s? xu?t hi?n như là ngư?i g?i e-mail ("someone@example.com" trong ví d? này).

B?n có th? s?a đ?i các ví d? này đ? có nó g?i e-mail d?a trên văn b?n ho?c t?p tin đính kèm. Đ?i v?i tài li?u hư?ng d?n v? CDOSYS, ghé thăm Web Microsoft sau đây Trang web:
http://MSDN.Microsoft.com/Library
Trong ngăn bên trái, m? r?ng, thư thoại tin t?c th?i và h?p tác, m? r?ng H?p tác d? li?u đ?i tư?ng, và sau đó m? r?ng CDO cho Windows 2000.

Thông tin thêm

Chúng tôi m?nh m? đ? ngh? r?ng b?n g?i email b?ng cách s? d?ng các đ?a phương SMTP đường dẫn thư mục lấy thư thay v? s? d?ng tên thư SMTP t? xa. M?u sp_send_cdosysmail lưu tr? th? t?c ch?y trong quá tr?nh v?i SQL Server và s? không thành công n?u máy ch? SMTP là offline ho?c b? h?ng. G?i b?c e-mail qua đ?a phương đường dẫn thư mục lấy thư ch? đ?i h?i r?ng các th? t?c d?ch s?n có quy?n các đường dẫn thư mục lấy thư. H? ph?c v? SMTP đ?c l?p s? x? l? các thư.

Đ? bi?t thêm thông tin v? làm th? nào đ? g?i thư b?ng cách s? d?ng các m?c tin thư thoại đ?a phương đón, b?m vào s? bài vi?t sau đ? xem bài vi?t trong Microsoft Knowledge Cơ s?:
286430Làm th? nào đ? g?i HTML đ?nh d?ng thư b?ng cách s? d?ng CDO cho Windows 2000 và m?c đón đ?a phương

Thu?c tính

ID c?a bài: 312839 - L?n xem xét sau cùng: 15 Tháng Mười 2012 - Xem xét l?i: 3.0
Áp d?ng
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 7.0 Standard Edition
T? khóa: 
kbsqlsetup kbhowtomaster kbmt KB312839 KbMtvi
Máy d?ch
QUAN TRỌNG: Bài vi?t này đư?c d?ch b?ng ph?n m?m d?ch máy c?a Microsoft ch? không ph?i do con ngư?i d?ch. Microsoft cung c?p các bài vi?t do con ngư?i d?ch và c? các bài vi?t do máy d?ch đ? b?n có th? truy c?p vào t?t c? các bài vi?t trong Cơ s? Ki?n th?c c?a chúng tôi b?ng ngôn ng? c?a b?n. Tuy nhiên, bài vi?t do máy d?ch không ph?i lúc nào c?ng hoàn h?o. Lo?i bài vi?t này có th? ch?a các sai sót v? t? v?ng, cú pháp ho?c ng? pháp, gi?ng như m?t ngư?i nư?c ngoài có th? m?c sai sót khi nói ngôn ng? c?a b?n. Microsoft không ch?u trách nhi?m v? b?t k? s? thi?u chính xác, sai sót ho?c thi?t h?i nào do vi?c d?ch sai n?i dung ho?c do ho?t đ?ng s? d?ng c?a khách hàng gây ra. Microsoft c?ng thư?ng xuyên c?p nh?t ph?n m?m d?ch máy này.
Nh?p chu?t vào đây đ? xem b?n ti?ng Anh c?a bài vi?t này: 312839

Cung cấp Phản hồi

 

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