Зараз ви перебуваєте в автономному режимі; очікується повторне підключення до Інтернету

Як надсилати сповіщення електронною поштою без сценарій виконання SQL пошти в SQL Server

ВАЖЛИВО! Ця стаття перекладена засобами машинного перекладу Microsoft. Статтю можна редагувати в середовищі Community Translation Framework (CTF). Щоб якомога швидше перекласти всі статті у своїй базі знань різними мовами, компанія Microsoft не лише звертається до професійних перекладачів, але й вдається до машинного перекладу, який потім редагується спільнотою. Такі статті можуть містити лексичні, синтаксичні та граматичні помилки. Microsoft не несе відповідальності за будь-які неточності, помилки або збитки, до яких може призвести неправильний переклад статей або їх використання. Докладніше про CTF див. на веб-сторінці http://support.microsoft.com/gp/machine-translation-corrections/uk-ua.

Клацніть тут, щоб переглянути цю статтю англійською мовою: 312839

У ВИРІШЕННІ ЦЬОГО ЗАВДАННЯ

Підсумки
SQL пошти надає простий спосіб надсилання і читання електронна пошта з Microsoft SQL Server. Однак, оскільки SQL пошти MAPI застосунку, підсистемою MAPI повинні бути присутніми на сервері. Microsoft Windows NT 4.0 встановлює підсистемою MAPI, під Вільний час інсталяції Windows обміну повідомленнями. Однак, Microsoft Windows 2000 не надає підсистемою MAPI. Таким чином, якщо ви бажаєте використовувати SQL пошти, інсталюйте клієнт MAPI, як Microsoft Outlook.

За допомогою інших методів відправляти простий Поштовий переказ протоколу SMTP електронна пошта безпосередньо з SQL Server. Наприклад, можна співпраці об'єкти даних для NT Server (CDONTS) або співпраці даних об'єктів для Windows 2000 (CDOSYS) в поєднанні з sp_OA SQL сервер OLE автоматизації збережених процедур. Ця стаття містить приклади сценарій виконання цих методів для надсилання електронна пошта на сервер пошти Інтернету. Ви можете змінити методи, так, що вони забезпечать більш надійні поштової системи. Наприклад, може знадобитися додати код обробки помилок. Методи в прикладах не забезпечують засіб для читання або для обробки електронна пошта.

Примітка. CDOSYS доступна, починаючи з Windows 2000, і ми рекомендуємо використовувати CDOSYS замість CDONTS. CDONTS не підтримується у Windows Server 2003 та пізніших операційних системах.

Примітка. Ці приклади програмного коду проілюструвати методів, які можна використовувати для виклику об'єктної моделі CDO в оператори Transact-SQL. Ви несете відповідальність за будь-якого програмування розширень до зразків, або будь-який стрес приймальні випробування, яке вимагається для запуску коду у виробничому середовищі.

корпорація Майкрософт надає приклади програмного коду тільки для ілюстрації без гарантій, виражених або припущених. Це включає, але не обмежуючись, можливі гарантії товарної придатності або придатності для конкретних цілей. У цій статті передбачається, що ви знайомі з мови програмування, що були продемонстровані та інструменти, які використовуються для створення і налагодження процедур. Співробітники представник служби підтримки клієнтів Microsoft можуть допомогти пояснити функціональність зокрема процедура, але вони не змінить цих прикладів, щоб надавати додано функціональність або побудувати процедури, щоб відповідати вашим конкретним вимогам.

Як використовувати CDO для сервера Microsoft Windows NT (CDONTS)

CDONTS — простий Поштовий переказ протоколу SMTP конкретні OLE сервер яка спеціально призначена для забезпечення обміну повідомленнями функціональні можливості веб-додатків. Таким чином, CDONTS підтримує відправлення електронна пошта HTML. MAPI-додатків, як SQL Mail, не роблять. за промовчанням Microsoft Internet Information Server (IIS) 4.0 або пізнішої версії встановлює CDONTS. за промовчанням у Microsoft Windows 2000 встановлює Microsoft Internet Information Server (IIS) 5.0.

Щоб отримати додаткові відомості про CDONTS клацніть номер статті в базі знань Microsoft Knowledge Base:
177850 У чому полягає різниця між CDO 1.2 і CDONTS?
CDONTS відправляє електронну пошту через SMTP локального сервера. Якщо ви не маєте SMTP-сервера на локальний сервер, можна використовувати віртуальний сервер SMTP, який встановлює IIS для маршрутизації електронна пошта SMTP з відповідними поштовий SMTP-сервер. Використовувати CDONTS для відправки електронна пошта з SQL Server, виконайте такі дії:
  1. Інсталяція служб IIS і вона працює на комп'ютері, що isrunning SQL Server.
  2. Вкажіть ваш поштовий SMTP-сервер як "проміжного вузла", щоб служби IIS SMTP автоматично направляє будь-які SMTP електронна пошта, що надсилається до yourlocal сервер до поштового сервера SMTP для доставки.
  3. Створити збереженої процедури в SQL Server, що ви можете використовувати tosend електронна пошта.
Під Вільний час сценарій виконання CDONTS замість SQL Mail, ви не повинні мати поштовий клієнт як Microsoft Outlook, інстальованих на комп'ютері, на якому запущено SQL Server. Ви також не повинні мати Microsoft Exchange server. Ви можете використовувати будь-якого поштового сервера, який підтримує сповіщення електронною поштою SMTP як ваш "проміжного вузла". Однак, ви не можете прочитати і обробки електронна пошта, що надсилається до комп ' ютера, на якому запущено SQL Server, використовуючи CDONTS. Не вдається замінити функціональність поштовий агент SQL.

Інструкції, які слідують спираються на Microsoft Windows 2000. Якщо на комп'ютері інстальовано IIS 4.0, можна настроїти Microsoft Windows NT 4.0 аналогічним чином. Однак кроки дещо відрізняються.

Щоб отримати додаткові відомості про настроювання "проміжного вузла" Microsoft Windows NT 4.0 клацніть номер статті для перегляду статті в базі знань Microsoft Knowledge Base:
230235 Настроювання служби IIS SMTP SMTP ретрансльована пошта

Настройте маршрутизацію вузла

  1. Натисніть кнопку Пуск, виберіть пункт програми, пункт Адмініструванняа потім
    виберіть Диспетчера служб Інтернету , відкрити диспетчер IIS.
  2. Відкрити дерево для вашого сервера. Клацніть правою кнопкою миші За промовчанням віртуального сервера SMTPі виберіть пункт Властивості.
  3. Знайдіть доставка на вкладці і натисніть кнопку Додатково.
  4. Введіть ім'я поштовий SMTP-сервер у полі Проміжного вузла . Якщо ви не знаєте назву вашого servercontact пошти SMTP адміністратор пошти.
  5. Переконайтеся, що запущено службу простий Поштовий переказ протоколу SMTP. SMTP-служба є частиною IIS Admin Service.Therefore, служби IIS Admin має бути запущено.

Створити збереженої процедури відправити CDONTS сповіщення електронною поштою

Примітка. Приклад компаній, організацій, продуктів, доменних імен, адреси електронна пошта, логотипи, люди, місця і події, наведені в цій статті, є вигаданими. Можливу схожість із реальними підприємствами, організації, продукт, ім'я домену, адресу електронна пошта, логотип, особи, місця або події має бути як випадкову.

Ви можете використовувати код, подібне до нижченаведеного створити збереженої процедури у вашій базі даних, який надсилає сповіщення електронною поштою за допомогою SQL Server автоматизацію OLE збережена процедура для виклику об'єктної моделі 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

Далі за допомогою збереженої процедури, які створено та забезпечити правильний параметрів:
exec sp_send_cdontsmail 'someone@example.com','someone2@example.com','Test of CDONTS','It works'
Примітка. Тільки члени фіксованого серверної ролі системний адміністратор може працювати автоматизацію OLE збережених процедур. Якщо користувач SQL Server не є членом системний адміністратор фіксованого серверної ролі, не можна використовувати збережених процедур, які згадуються в прикладі надсилати сповіщення електронною поштою. В такій ситуації ви, можливо, розробити клієнтського застосунку надсилати сповіщення електронною поштою з CDONTS. Наприклад, можна використовувати застосунок Microsoft Visual Basic.

CDONTS надсилає сповіщення електронною поштою до місцевих віртуальним сервером SMTP. Сервер потім переспрямовує електронну пошту на поштовий SMTP-сервер, указаний у полі Проміжного вузла . Поштовий SMTP-сервер надсилає пошта адреса електронна пошта, який вказано у на до: аргументу ("someone2@example.com" в прикладі). Ім'я, яке обумовлено в на з: аргументу
з'являється, як відправник повідомлень електронна пошта ("someone@example.com» в цьому прикладі) з цього питання"Випробування CDONTS"і повідомлення"це працює"в тексті сповіщення електронною поштою. Ніхто копіюється на сповіщення електронною поштою, тому що ви не надав аргумент для CC або для ВСР області.

Ви можете змінити приклад, так що він буде відправляти електронна пошта HTML або вкладення. Документації про CDONTS відвідайте веб-сайт корпорації Майкрософт: В області ліворуч послідовно розгорніть вузли обміну повідомленнями та спільної роботи, розширити Співпрацю об'єкти данихта CDO 1.2.1.

Ви можете знайти документацію для SQL Server автоматизацію OLE збережена процедура в SQL Server 2000 Books Online.

back to the top

Як використовувати CDO, за Microsoft Windows 2000 (CDOSYS)

CDOSYS надає об'єктної моделі для розробки застосунків обміну повідомленнями Microsoft Windows 2000. Вона також забезпечує розширеною функціональністю існуючих бібліотечних CDO для Windows NT Server (CDONTS). CDOSYS вимагає Windows 2000 і місцеві або віддалений сервер SMTP.

Ви можете налаштувати CDOSYS вказують серверів SMTP програмним шляхом дарувати розробників гнучкість конфігурування серверів SMTP.

Щоб отримати додаткові відомості про CDOSYS клацніть номер статті в базі знань Microsoft Knowledge Base:
195683 Зв'язок між 1. x CDO бібліотек і CDOSYS.DLL
Оскільки CDOSYS можете надсилати сповіщення електронною поштою з віддаленим сервером SMTP, CDOSYS не вимагає наявності інтернет інформації сервер встановлений і працює на комп'ютері, на якому запущено SQL Server. Ви також не повинні налаштувати SMTP віртуальний сервер. Все, що вам потрібно зробити полягає в створенні збереженої процедури в SQL Server, який дає змогу надсилати сповіщення електронною поштою.

Під Вільний час сценарій виконання CDOSYS замість SQL Mail, ви не повинні мати поштовий клієнт як Microsoft Outlook, інстальованих на комп'ютері, на якому запущено SQL Server. Ви також не повинні мати Exchange server. Ви можете використовувати будь-якого поштового сервера, який підтримує протокол IMAP за протоколом SMTP як ваш віддалений поштовий SMTP-сервер. Тим не менш, неможливо прочитати або обробки електронна пошта, що надсилається до SQL Server, при використанні CDOSYS. Не вдається замінити функціональність поштовий агент SQL.

сценарій виконання CDOSYS з SQL Server автоматизацію OLE-об'єкт спирається на SQL Server автоматизацію OLE для виклику об'єктної моделі CDOSYS. Це була протестована з SQL Server 2000 з пакетом оновлень 1 (SP1) і SQL Server 2000 з пакетом оновлень 2 (SP2). Microsoft не гарантує, що CDOSYS може бути викликаний з програмуванням OLE збережених процедур на версії SQL Server, які були випущені раніше SQL Server 2000 SP1.

Створити збереженої процедури відправити пошту CDOSYS

Ви можете використовувати код, подібне до нижченаведеного створити збереженої процедури у вашій базі даних, який надсилає повідомлення електронної пошти за допомогою SQL Server автоматизацію OLE збережені процедури для виклику об'єктної моделі CDOSYS.

У цьому прикладі ми надаємо додатковий ступінь обробку помилок до перевірте, hresult декларації про кожного EXEC sp_OA * . Якщо hresult (@hr) дорівнює нулю, попередній sp_OA * заява була успішною. Однак, якщо це hresult є ненульовим, попередній sp_OA * оператор не вдалося.

Для кожного ненульових hresult недостатності рядок вставляється в таблиці [dbo].[cdosysmail_failures] що відзначає, місце і час провал. Крім того, остання помилка інтерпретується за допомогою sp_OAGetErrorInfo Збережена процедура повідомити про джерело та опис помилки. Що опис помилки друкується на підключення до клієнта. Також Цей опис помилки, час і місце відмови вставляються до таблиці [dbo].[cdosysmail_failures] в базі даних, щоб визначити і діагностувати невдачі після доконаного факту.

Якщо не вдається sp_OAGetErrorInfo Збережена процедура, приклад друкує таке повідомлення про помилку, для підключення до клієнта:

sp_OAGetErrorInfo не вдалося
-- 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
Далі за допомогою збереженої процедури, які створено та забезпечити правильні параметри.
   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
Примітка. Тільки члени фіксованого серверної ролі Системний адміністратор може працювати автоматизацію OLE збережених процедур. Якщо SQL Server користувач не є членом Системний адміністратор фіксованого серверної ролі, не можна використовувати збережених процедур, які згадуються в прикладі надсилати повідомлення електронної пошти. В такій ситуації ви, можливо, для розробки клієнтських застосунків для надсилання повідомлень з CDOSYS. Наприклад, можна використовувати застосунок Microsoft Visual Basic.

CDOSYS надсилає повідомлення електронної пошти на віддаленому поштовий SMTP-сервер, указаний як cdoSMTPServerName.

Поштовий SMTP-сервер надсилає пошта адреса електронної пошти, який вказано у на до: аргументу ("someone2@example.com" в цьому прикладі). Ім'я, яке обумовлено в на з: аргументу відображається як відправник повідомлень електронної пошти ("someone@example.com» в цьому прикладі).

Ви можете змінити цей приклад його надсилання електронної пошти тексту або вкладення. Документації про CDOSYS відвідайте веб-сайт корпорації Майкрософт: В області ліворуч послідовно розгорніть вузли обміну повідомленнями та спільної роботи, розширити Співпрацю об'єкти данихта CDO для Windows 2000.

back to the top
Додаткові відомості
Ми настійно рекомендуємо, що ви відправите повідомлення електронної пошти за допомогою місцевих SMTP розкладки замість того щоб використовувати віддалене ім'я SMTP-пошти. Зразок sp_send_cdosysmail Збережена процедура працює в процесі з SQL Server і буде провал, якщо сервер SMTP в автономному режимі або зламані. Надсилання повідомлень електронної пошти через місцеві розкладки вимагає тільки що збережену процедуру має дозвіл на пікап каталогів. SMTP-сервер буде самостійно обробити пошту.

Щоб отримати додаткові відомості про те, як надсилати пошту за допомогою місцевих розкладки, клацніть номер статті в базі знань Microsoft Knowledge Base:
286430 Як надіслати HTML форматі пошти за допомогою CDO для Windows 2000 і місцевих розкладки
POP3 Інтернет lotus notes novell системи groupwise

Попередження. Цю статтю переведено автоматично

Властивості

Ідентифікатор статті: 312839 – останній перегляд: 06/22/2014 11:23:00 – виправлення: 2.0

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

  • kbsqlsetup kbhowtomaster kbmt KB312839 KbMtuk
Зворотний зв’язок