sql Server'da sql posta kullanmadan e-posta gönderme hakkında

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 e-posta okumak için kolay bir yol sağlar. Microsoft sql Server. Ancak, sql Mail MAPI MAPI bir uygulama olduğundan alt sunucuda bulunması gerekir. Microsoft Windows NT 4. 0'ı yükler bir MAPI alt sisteminde Windows Messaging yüklediğinizde. Ancak, Microsoft Windows 2000 MAPI alt sisteminde sağlamaz. Bu nedenle, sql Mail kullanmak istiyorsanız, Microsoft Outlook gibi bir MAPI istemci yüklemeniz gerekir.

Kullanabilirsiniz Basit Posta Aktarım Protokolü (smtp) e-posta doğrudan göndermek için diğer yöntemleri sql Server. Örneğin, nt Server için işbirliği veri nesneleri kullanabilirsiniz (cdonts) veya işbirliği veri nesneleri için Windows 2000 (cdosys) birlikte sql Server ole Otomasyonu saklı yordamlar ile sp_OA . Bu makalede bir Internet e-posta göndermek için bu teknikleri kullanan örnekler içerir. posta sunucusu. Böylece daha sağlayacak teknikler değiştirebilirsiniz. posta sistemi sağlam. Örneğin, hata işleme kodunu eklemeniz yararlı olabilir. Örnek yöntemleri veya okuma için bir yol sağlamaz e-posta işleme.

Not cdosys Windows 2000'den itibaren kullanılabilir ve öneririz cdosys cdonts kullanacağınız. cdonts, Windows ile desteklenmiyor Server 2003 ve sonraki işletim sistemleri.

Not Bu programlama örnekleri, kullandığınız teknikleri Transact-sql cdo nesne modelinde çağırmak için. Dolayı sorumlu yani test örnekleri veya herhangi bir programlama uzantıları stres ürün kodu çalıştırmak için gerekli ortam.

Microsoft, programlama örneklerini yalnızca gösterim amacıyla sağlar, veya zımni garanti. Bu içerir, ancak bunlarla sınırlı değildir ticari olarak satılabilirlik veya belirli bir uygunluk zımni garantileri için Amaç. Bu makalede ile programlama hakkında bilgi sahibi olduğunuz varsayılmaktadır. gösterilen dili ve oluşturmak için kullanılan araçlar ve yordamlar hata ayıklamak için. Microsoft destek mühendisleri açıklanmasına yardımcı olabilir Belirli bir yordamın işlevselliğinin ancak bunlar değiştirmez örnekler, ek işlevsellik sağlamak veya karşılamak için bir yordam oluşturmak için belirli gereksinimleri.

Microsoft Windows NT Server (cdonts) cdo nasıl kullanılır

Basit Posta Aktarım Protokolü (smtp) belirli ole cdonts değil ileti işlevsellik sağlamak için özel olarak tasarlanmış sunucu Web tabanlı uygulamalar. Bu şekilde, cdonts gönderen html tabanlı e-posta destekler. sql Mail gibi MAPI tabanlı uygulamalar yoktur. Varsayılan olarak, Microsoft Internet cdonts Information Server (IIS) 4.0 veya daha yeni sürümü yükler. Varsayılan olarak, Microsoft Windows 2000, Microsoft Internet Information Server (IIS) yükler 5.0.

cdonts hakkında daha fazla bilgi için tıklatın Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
177850cdo 1.2 cdonts arasındaki fark nedir?
cdonts için yerel smtp üzerinden e-posta gönderir Sunucu. smtp sunucusu yerel sunucunuzda yoksa kullanın IIS için smtp e-posta yönlendirmek için yükler, smtp sanal sunucusu uygun smtp posta sunucusu. cdonts sql sunucusundan e-posta göndermek için kullanmak için aşağıdaki adımları izleyin:
  1. IIS'yi yükledikten sonra ve sahip olduğu bilgisayarda çalışan sql Server çalışıyor.
  2. smtp posta sunucunuz, "akıllı ana bilgisayar" olarak belirtmek için IIS smtp hizmeti otomatik olarak gönderilen smtp e-posta yönlendirir, yerel sunucu için smtp posta teslimi için.
  3. Bir saklı yordam oluşturmak için kullanabileceğiniz sql Server e-posta gönderin.
sql Mail yerine cdonts kullandığınızda, size gerekmez yüklü olduğu bilgisayarda yüklü Microsoft Outlook gibi bir posta istemcisi sql Server çalışıyor. Ayrıca bir Microsoft Exchange sunucusu olması gerekmez. smtp e-posta "akıllı ana bilgisayarınızın." olarak destekleyen herhangi bir posta sunucusu kullanabilirsiniz. Ancak, siz yapamazsınız okuyabilen ve işleyebilen bilgisayara gönderilen e-posta, cdonts kullanarak sql Server çalışıyor. Ayrıca değiştirilemiyor sql Agent Mail işlevselliği.

Yönergeleri izleyerek dayanır. Microsoft Windows 2000 üzerinde. IIS 4.0 bilgisayarda yüklüyse yapabilirsiniz Microsoft Windows NT 4.0 benzer şekilde yapılandırın. Ancak adımları farklı biraz.

Nasıl yapıldığı hakkında daha fazla bilgi için Microsoft Windows NT 4.0 üzerinde "akıllı ana bilgisayar" yapılandırmak için aşağıdakileri tıklatın. Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere makale numarasını tıklatın:
230235smtp 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' ın üzerine gelin, Yönetimsel Araçlar' ın üzerine gelin ve sonra
    IIS Yöneticisi'ni açmak için Internet Services Manager ' ı 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 kutusuna smtp posta sunucunuzun adını yazın. smtp posta sunucunuzun adını bilmiyorsanız posta yöneticinize başvurun.
  5. Emin olun Basit Posta Aktarım Protokolü (smtp) Hizmet çalışıyor. smtp hizmetini IIS Admin hizmetinin bir parçasıdır. Bu nedenle, IIS Yönetim hizmeti de çalışmalıdır.

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 olaylar bu makalede adı geçen hayal ürünüdür. Herhangi bir gerçek şirket, kuruluş, ürün ile ilişkisi, etki alanı adı, e-posta adresi, logo, kişi, yerler veya olaylar tasarlanmıştır veya çıkarılmamalıdır.

Aşağıdakine benzer bir kod kullanabilirsiniz. sql Server'ı kullanarak e-posta gönderen, veritabanında saklı yordam oluşturmak için ole Otomasyonu saklı yordamlar cdonts nesne modelini çağırabilir.

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 sağlamak doğru parametreleri:
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, saklı yordamı kullanamazsınız. e-posta göndermek için örnekte bahsedilen. Böyle bir durumda, gerekebilir cdonts ile e-posta göndermek için bir istemci uygulaması geliştirebilirsiniz. Örneğin, şunları yapabilirsiniz Microsoft Visual Basic uygulamasını kullanın.

cdonts için e-posta gönderir. Yerel smtp sanal sunucusu. Sunucu e-posta için smtp sonra yönlendirir. Akıllı ana bilgisayar metin kutusunda belirtilen posta sunucusuna. smtp posta sunucusu e-posta gönderir Belirtilen adres için: bağımsız değişkeni (örneğin "someone2@example.com"). Adı, Belirtilen From: bağımsız değişkeni
e-posta gönderen olarak görünür (Bu örnekte "someone@example.com") "cdonts Test" konulu ve ileti "e-posta gövdesi olarak çalıştığı". Hiç kimse kopyalanır bilgi veya Gizli alanı için bir bağımsız değişken sağlamadı çünkü e-posta.

Onu gönderecek şekilde örnek değiştirebilirsiniz html tabanlı e-posta veya ekler. cdonts hakkında belgeler için ziyaret edin aşağıdaki Microsoft Web sitesi:
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.

Belgelerine sql Server ole bulabilirsiniz. Otomasyon sql Server 2000 Çevrimiçi Kitapları içinde saklı yordamlar.

Microsoft Windows 2000 (cdosys) için CDO'yu nasıl

cdosys messaging geliştirmek için nesne modeli sağlar. Microsoft Windows 2000 uygulamaları. Ayrıca gelişmiş işlevsellik sağlar Varolan Windows NT Server için cdo (cdonts) kitaplığı. cdosys gerektirir Windows 2000 ve bir yerel veya uzak smtp sunucusunun.

Konfigüre edebilirsiniz Programlı olarak geliştiriciler esneklik vermek için smtp sunucularını gösterecek şekilde cdosys smtp sunucuları yapılandırma.

İçin cdosys hakkında daha fazla bilgi görüntülemek üzere aşağıdaki makale numarasını tıklatın Microsoft Bilgi Bankası makalesine:
1956831.X cdo kitaplıkları ve cdosys arasındaki ilişki.DLL
cdosys için bir uzak smtp e-posta göndermek için Sunucu, cdosys Internet bilgi sunucusu olması gerekmez bilgisayar üzerinde çalışır ve yüklü olan sql Server çalışıyor. Ayrıca yapın smtp sanal sunucusunu yapılandırmanız gerekmez. Tek yapmanız gereken şey oluşturmak için e-posta göndermek için kullanabileceğiniz bir sql Server bir saklı yordam.

sql Mail yerine cdosys kullandığınızda, bir posta istemcisi olması gerekmez Microsoft sql Server çalıştıran bilgisayarda yüklü Outlook gibi. Ayrıca Exchange server olması gerekmez. Herhangi bir posta sunucusu kullanabilirsiniz. Uzak smtp posta sunucusu olarak smtp postasını destekleyen. Ancak, olamaz Okuma veya cdosys kullanıyorsanız, sql Server'a gönderilen e-posta işlemek. Siz de sql Agent posta işlevlerini değiştiremez.

cdosys kullanımı sql Server ole otomasyonu ile sql Server ole Otomasyon nesne dayanır cdosys nesne modelini çağırmak için. sql Server 2000 Service ile test edildi Service pack 1 (SP1) ve sql Server 2000 Service Pack 2 (SP2). Microsoft yok cdosys saklanan Otomasyonu Yordamlardan çağrılabilen garanti sql Server 2000 SP1'den önce yayımlanan sürümleri sql Server üzerinde.

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

Oluşturmak için benzer bir kod kullanabilirsiniz bir saklı yordam, veritabanı sql Server ole Otomasyonu kullanarak e-posta gönderen cdosys nesne modelini çağırmak için saklı yordamlar.

Bu örnekte, hata isteğe bağlı bir ölçüde sağlıyoruz hresult her exec sp_OA * deyiminin denetlemek için işleme. Hresult (@hr) sıfır ise, önceki sp_OA * deyim başarılı. Ancak, o 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 bir [dbo] tabloya satır eklenir.[cdosysmail_failures] yer, notlar ve başarısızlık zaman. Ayrıca, son hata kaynak ve hatanın açıklaması bildirmek için sp_OAGetErrorInfo saklı yordamı kullanılarak yorumlanır. Bu hata Açıklama, istemci bağlantısı yazdırılır. Ayrıca bu hata açıklaması zamanı ve yeri hata tabloya eklenen [dbo].[cdosysmail_failures] veritabanında olduğunu tespit edebilirsiniz ve sonra gerçeği başarısızlıkları tanımada.

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

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 sağlar Parametreler.
   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, saklı yordamı kullanamazsınız. e-posta göndermek için örnekte bahsedilen. Böyle bir durumda, gerekebilir cdosys ile posta göndermek için bir istemci uygulaması geliştirebilirsiniz. Örneğin, kullanma Microsoft Visual Basic uygulama.

cdosys için e-posta gönderir cdoSMTPServerNamebelirtilen uzak smtp posta sunucusu.

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

Bu örnekte, metin tabanlı e-posta göndermek için değiştirebilirsiniz veya ekler. cdosys hakkında belgeler için aşağıdaki Microsoft Web sitesini ziyaret Site:
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

Yerel kullanarak e-posta göndermek kesinlikle öneririz Uzak smtp posta adını kullanmak yerine toplama dizini smtp. Sp_send_cdosysmail örnek sql sunucu ile işlem depolanan yordamı çalıştırır ve olacaktır smtp sunucu çevrimdışı veya kırık ise başarısız. Yerel e-posta gönderme Toplama dizini yalnızca gerektirir saklı yordam için iznine sahip Toplama dizini. smtp sunucusu bağımsız olarak işleyecek posta.

Daha fazla bilgi için Yerel Alma dizini kullanarak posta gönderme hakkında bilgi Microsoft Knowledge makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın Base:
286430Windows 2000 için cdo ve yerel Alma dizini kullanarak posta html göndermek nasıl biçimlendirilmiş

Özellikler

Makale numarası: 312839 - Last Review: 15 Ekim 2012 Pazartesi - Gözden geçirme: 1.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, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
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