SQL Server'da SQL posta kullanmadan e-posta gönderme

Makale çevirileri Makale çevirileri
Makale numarası: 312839 - Bu makalenin geçerli olduğu ürünleri görün.
Hepsini aç | Hepsini kapa

Bu Sayfada

Özet

SQL Mail gönderebilir ve Microsoft SQL Server e-posta okumak için kolay bir yol sağlar. SQL Mail bir MAPI uygulaması olduğundan, ancak, bir MAPI alt sisteminde sunucuda bulunması gerekir. Microsoft Windows NT 4.0, Windows Messaging yüklediğinizde bir MAPI alt sisteminde yükler. Ancak, Microsoft Windows 2000, bir MAPI alt sisteminde sağlamaz. Bu nedenle, SQL Mail kullanmak isterseniz, Microsoft Outlook gibi bir MAPI istemci yüklemeniz gerekir.

Doğrudan SQL Server Basit Posta Aktarım Protokolü (SMTP) e-posta göndermek için diğer yöntemleri kullanabilirsiniz. Örneğin, birlikte çalışma veri nesneleri NT Server (CDONTS) veya işbirliği veri nesneleri için Windows 2000 (CDOSYS) için sp_OA SQL Server OLE saklanan Otomasyonu yordamları ile birlikte kullanabilirsiniz. Bu makalede, bir Internet posta sunucusu e-posta göndermek için bu teknikleri kullanan örnekler içerir. Teknikleri daha sağlam bir posta sistemi sağlamak şekilde değiştirebilirsiniz. Örneğin, hata işleme kodunu eklemeniz yararlı olabilir. Örnek yöntemleri okumak veya e-posta işlemek için bir yol sağlamaz.

Not Windows 2000'den itibaren CDOSYS kullanılabilir ve CDONTS CDOSYS kullanmanızı öneririz. CDONTS, Windows Server 2003 ve sonraki işletim sistemlerinde desteklenmez.

Not Bu programlama örnekleri Transact-SQL CDO nesne modelinde çağırmak için kullanabileceğiniz teknikler gösterilmiştir. Örnekler için herhangi bir programlama uzantıları sorumlu veya için herhangi bir stres sınama kodu bir üretim ortamında çalıştırmak için gereklidir.

Microsoft, programlama örneklerini yalnızca gösterim amacıyla sağlar, zımni veya açık garanti vermez. Bu garanti satılabilirlik veya belirli bir amaca uygunluk zımni garantilerini içerir, ancak bunlarla sınırlı değildir. Bu makalede, gösterilen programlama dilinin yanı sıra, yordam oluşturma ve yordamlardaki hataları ayıklama prosedürleri için kullanılan araçları bildiğiniz varsayılır. Microsoft destek mühendisleri belirli bir yordamın işlevselliğinin açıklanmasına yardımcı olabilir, ancak işlevsellik sağlamak için bu örnekleri değiştirmez ve belirli gereksinimlerinizi karşılayacak şekilde bu yordamları geliştirmezler.

CDO Microsoft Windows NT Server (CDONTS) nasıl kullanılır

CDONTS, Web tabanlı uygulamalar için ileti işlevselliği sağlamak için özel olarak tasarlanmış bir Basit Posta Aktarım Protokolü (SMTP) belirli OLE sunucusudur. Bu nedenle, HTML tabanlı e-posta gönderme CDONTS destekler. SQL Mail gibi MAPI tabanlı uygulamaları yoktur. Varsayılan olarak, Microsoft Internet Information Server (IIS) 4.0 veya yukarısı, CDONTS yükler. Varsayılan olarak, Microsoft Windows 2000, Microsoft Internet Information Server (IIS) 5.0 yükler.

CDONTS hakkında daha fazla bilgi için Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
177850 CDO 1.2 CDONTS arasındaki fark nedir?
CDONTS, e-posta SMTP aracılığıyla yerel sunucuya gönderir. Yerel sunucunuzda bir SMTP sunucusu yoksa, uygun SMTP posta sunucusunun SMTP e-posta yönlendirmek için IIS'yi yükler SMTP sanal sunucusunu kullanabilirsiniz. CDONTS SQL sunucusundan e-posta göndermek için kullanmak için şu adımları izleyin:
  1. IIS'yi yükleyin ve SQL Server'ı çalıştığı bilgisayarda çalışıyor olması.
  2. IIS SMTP hizmeti Nothwind Traders sunucusu, SMTP posta sunucusuna teslim edilmek üzere gönderilen SMTP e-postaları otomatik olarak yönlendirir, böylece, "akıllı ana bilgisayar", SMTP posta sunucusunu belirtin.
  3. Tosend e-posta kullanabilirsiniz SQL Server saklı yordam oluşturun.
SQL Mail yerine CDONTS kullandığınızda, SQL Server çalıştıran bilgisayarda yüklü Microsoft Outlook gibi bir posta istemcisi olması gerekmez. Ayrıca bir Microsoft Exchange sunucusu olması gerekmez. SMTP e-posta, "akıllı ana bilgisayar." olarak destekleyen herhangi bir posta sunucusu kullanabilirsiniz. Ancak, okuma ve CDONTS kullanarak SQL Server çalıştıran bilgisayara gönderilen e-posta işleme. Ayrıca SQL Agent posta işlevlerini değiştiremez.

Yönergeleri izleyin, Microsoft Windows 2000 dayanır. IIS 4.0 bilgisayarınızda yüklüyse, Microsoft Windows NT 4.0 benzer şekilde yapılandırabilirsiniz. Ancak, adımlar biraz farklı olacaktır.

"Akıllı ana bilgisayar" Microsoft Windows NT 4. 0'da, nasıl yapılandırılacağı hakkında daha fazla bilgi için Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
230235 SMTP posta IIS SMTP hizmeti nasıl yapılandırılır

Akıllı ana bilgisayarı yapılandırma

  1. Başlat' ı tıklatın, Programlar, Yönetimsel Araçlar' ın üzerine ve sonra
    IIS Yöneticisi'ni açmak için Internet Hizmetleri Yöneticisi ' ni tıklatın.
  2. Sunucunuz için ağacını açın. Varsayılan SMTP Sanal Sunucusu'nusağ tıklatın ve sonra Özellikler' i tıklatın.
  3. Teslim sekmesini bulun ve sonra Gelişmiş' i tıklatın.
  4. Akıllı ana bilgisayar metin kutusunda, SMTP posta sunucusunun adını yazın. Posta yöneticiniz, SMTP posta servercontact adını bilmiyorsanız.
  5. Basit Posta Aktarım Protokolü (SMTP) hizmetinin çalıştığından emin olun. SMTP hizmeti, IIS Yönetim Service.Therefore bir parçasıdır, IIS Yönetim hizmeti de çalıştırıyor olmanız gerekir.

CDONTS e-posta göndermek için bir saklı yordam oluşturma

Not Örnek şirketler, kuruluşlar, ürünler, etki alanı adları, e-posta adresleri, logolar, kişiler, yerler ve bu makalede olaylar hayal ürünüdür. Hiçbir gerçek şirket, kuruluş, ürün, etki alanı adı, e-posta adresi, logo, kişi, yer veya olayları ile amaçlanmamıştır veya ima edilmemektedir.

Veritabanınızdaki CDONTS nesne modelini çağırmak için SQL Server OLE saklanan Otomasyonu yordamları kullanarak e-posta gönderen bir saklı yordam oluşturmak için aşağıdakine benzer bir kod kullanabilirsiniz.

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

Daha sonra oluşturduğunuz saklı yordamı kullanın ve doğru parametreleri sağlar:
exec sp_send_cdontsmail 'someone@example.com','someone2@example.com','Test of CDONTS','It works'
Not Yalnızca sysadmin sabit sunucu rolü üyelerinin saklanan Otomasyonu yordamları çalıştırabilirsiniz. SQL Server kullanıcı sysadmin sabit sunucu rolünün bir üyesi değilse, e-posta göndermek için örnekte belirtilen saklı yordamı kullanamazsınız. Böyle bir durumda, CDONTS ile e-posta göndermek için bir istemci uygulaması geliştirmek zorunda kalabilirsiniz. Örneğin, bir Microsoft Visual Basic uygulamasını kullanabilirsiniz.

CDONTS, yerel SMTP sanal sunucusu e-posta gönderir. Sunucu Akıllı ana bilgisayar metin kutusunda belirtilen SMTP posta sunucusu e-posta sonra yönlendirir. Belirtilen e-posta adresine posta SMTP posta sunucusu gönderir için: bağımsız değişkeni (örneğin "someone2@example.com"). Belirtilen ad From: bağımsız değişkeni
e-posta (Bu örnekte "someone@example.com") ile "CDONTS Test" konu ve ileti göndereni olarak "e-posta gövdesi olarak çalıştığı" görüntülenir. Gizli alanını veya bilgi için bağımsız değişken sağlamadı çünkü hiç kimse e-posta kopyalanır.

Örnek HTML tabanlı e-posta veya ekleri göndermek şekilde değiştirebilirsiniz. CDONTS hakkında belgeler için aşağıdaki Microsoft Web sitesini ziyaret edin:
http://msdn.microsoft.com/library
Sol bölmede, ileti ve işbirliğigenişletin İşbirliği veri nesneleri' ni genişletin ve sonra CDO 1.2.1genişletin.

SQL Server 2000 Çevrimiçi Kitapları'de SQL Server OLE saklanan Otomasyonu yordamları için belgeleri bulabilirsiniz.

CDO Microsoft Windows 2000 (CDOSYS) nasıl kullanılır

CDOSYS Microsoft Windows 2000 ileti uygulamaları geliştirmek için bir nesne modeli sağlar. Ayrıca varolan bir CDO için arama Windows NT Server (CDONTS) kitaplığı gelişmiş işlevsellik sağlar. Windows 2000'de ve bir yerel veya uzak SMTP sunucusunun CDOSYS gerektirir.

CDOSYS programlı olarak geliştiriciler SMTP sunucularını yapılandırma esneklik vermek için SMTP sunucularına işaret edecek şekilde yapılandırabilirsiniz.

CDOSYS hakkında daha fazla bilgi için Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
195683 1.x CDO kitaplıkları ve CDOSYS arasındaki ilişki.DLL
CDOSYS uzak SMTP sunucusuna e-posta gönderebilirsiniz çünkü CDOSYS Internet Bilgi Sunucusu yüklü ve SQL Server çalıştıran bilgisayarda çalışıyor olması gerekmez. Ayrıca SMTP sanal sunucusunu yapılandırmanız gerekmez. Yapmanız gereken tek şey, e-posta göndermek için kullanabileceğiniz SQL Server'da bir saklı yordam oluşturmak için.

SQL Mail yerine CDOSYS kullandığınızda, SQL Server çalıştıran bilgisayarda yüklü Microsoft Outlook gibi bir posta istemcisi olması gerekmez. Ayrıca bir Exchange sunucusu olması gerekmez. Olarak, uzak SMTP posta sunucusunun SMTP postasını destekleyen herhangi bir posta sunucusu kullanabilirsiniz. Ancak, okuma veya CDOSYS kullanırsanız, SQL Server'a gönderilen e-postaları işlemek. Ayrıca SQL Agent posta işlevlerini değiştiremez.

SQL Server OLE Otomasyon nesne CDOSYS kullanımıyla SQL Server OLE CDOSYS nesne modelini çağırmak için Otomasyon dayanır. SQL Server 2000 Service Pack 1 (SP1) ve SQL Server 2000 Service Pack 2 (SP2) ile test. Microsoft CDOSYS saklanan Otomasyonu yordamları, SQL Server 2000 SP1'den önce yayımlanan sürümleri SQL Server'ın üzerinde çağrılabilir garanti etmez.

CDOSYS posta göndermek için bir saklı yordam oluşturma

Veritabanınızdaki CDOSYS nesne modelini çağırmak için SQL Server OLE saklanan Otomasyonu yordamları kullanarak e-posta gönderen bir saklı yordam oluşturmak için aşağıdakine benzer bir kod kullanabilirsiniz.

Bu örnekte, isteğe bağlı bir hata hresult her EXEC sp_OA * deyiminin denetlemek için işleme derecesini sağlar. Hresult (@hr) sıfır ise, önceki sp_OA * deyimi başarılı oldu. Ancak, bu hresult sıfır değilse, önceki sp_OA * deyimi başarısız oldu.

Her sıfır olmayan bir hresult hatası için [dbo] tablosuna bir satır eklenir.[cdosysmail_failures] yer ve zaman hata notlar. Ayrıca, son hata rapor kaynak ve hatanın açıklaması için sp_OAGetErrorInfo saklı yordamını kullanarak yorumlanır. Bu hata açıklaması yapılan istemci bağlantılarına yazdırılır. Ayrıca bu hata açıklaması, zamanı ve yeri hata [dbo] tabloya eklenir.[cdosysmail_failures] veritabanında tanımlamak ve sonra olgu başarısızlıkları tanımada.

Sp_OAGetErrorInfo depolanan yordamı başarısız olursa, aşağıdaki hata iletisini istemci bağlantısı için örnek yazdırır:

sp_OAGetErrorInfo başarısız oldu
-- 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

Daha sonra oluşturduğunuz saklı yordamı kullanın ve doğru parametreleri sağlar.
   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 Yalnızca sysadmin sabit sunucu rolü üyelerinin saklanan Otomasyonu yordamları çalıştırabilirsiniz. SQL Server kullanıcı sysadmin sabit sunucu rolünün bir üyesi değilse, e-posta göndermek için örnekte belirtilen saklı yordamı kullanamazsınız. Böyle bir durumda, CDOSYS ile posta göndermek için bir istemci uygulaması geliştirmek zorunda kalabilirsiniz. Örneğin, bir Microsoft Visual Basic uygulamasını kullanabilirsiniz.

CDOSYS cdoSMTPServerNamebelirtilen SMTP posta sunucusu e-posta gönderir.

Belirtilen e-posta adresine posta SMTP posta sunucusu gönderir için: bağımsız değişkeni (Bu örnekte "someone2@example.com"). Belirtilen ad From: bağımsız değişkeni (Bu örnekte "someone@example.com") e-postanın göndereni olarak görünür.

Bu örnek metin tabanlı e-posta veya ekleri göndermek için değiştirebilirsiniz. CDOSYS hakkında belgeler için aşağıdaki Microsoft Web sitesini ziyaret edin:
http://msdn.microsoft.com/library
Sol bölmede, ileti ve işbirliğigenişletin İşbirliği veri nesneleri' ni genişletin ve Windows 2000 için CDO'ıgenişletin.

Daha fazla bilgi

Uzak SMTP posta adını kullanmak yerine yerel SMTP alma dizini kullanarak e-posta göndermek öneririz. Sp_send_cdosysmail örnek SQL Server işlemi yordamı çalıştığında depolanır ve SMTP sunucu çevrimdışı veya kırık ise başarısız olur. E-posta yoluyla yerel toplama dizini gönderme yalnızca saklı yordam toplama dizini izni olmasını gerektirir. SMTP sunucusuna posta bağımsız olarak işler.

Yerel alma dizini kullanarak posta gönderme hakkında daha fazla bilgi için Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
286430 Windows 2000 için CDO ve yerel alma dizini kullanarak posta gönderme HTML biçimli

Özellikler

Makale numarası: 312839 - Last Review: 22 Haziran 2014 Pazar - Gözden geçirme: 2.0
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 7.0 Standard Edition
Anahtar Kelimeler: 
kbsqlsetup kbhowtomaster kbmt KB312839 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, Microsoft Makine Çevirisi Düzenleme yazılımı tarafından tercüme edilmiş olup, yüksek olasılıkla profesyonel bir çevirmen yerine CTF teknolojisi kullanılarak, Microsoft Topluluğu tarafından düzenlenmiştir. Microsoft, Bilgi Bankamız içindeki tüm makaleleri kendi dilinizde okuyabilmeniz için size hem profesyonel çevirmenler tarafından tercüme edilen hem de makine tarafından tercüme edildikten sonra Topluluk tarafından kontrol edilen makaleler sunar. Bununla birlikte, makine tarafından tercüme edilen, hatta Topluluk tarafından kontrol edilen bir makale bile her zaman mükemmel dil kalitesinde olmayabilir. Makalede dilinizi konuşan yabancı birisinin yapabileceği türden sözcük, söz dizimi veya dilbilgisi hataları bulunabilir. Microsoft, içeriğin hatalı tercümesinin veya müşterilerimiz tarafından kullanımının doğurabileceği olası yanlış anlamalar, hatalar veya zararlardan sorumlu değildir. Öte yandan Microsoft, Makine Çevirisi Düzenleme işlemini geliştirmek amacıyla Makine Çevirisi Düzenleme yazılımını ve araçlarını sık sık güncelleştirmektedir.
Makalenin İngilizcesi aşağıdaki gibidir: 312839

Geri Bildirim Ver

 

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