Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 CDOSYS  [new]
Игорь_В
Member

Откуда:
Сообщений: 8
Добрый день.
Есть хранимая процедура для рассылки почты при помощи CDO, неоднократно описанная в форуме:
CREATE PROCEDURE [dbo].[sp_send_cdosysmail]
@From varchar(100) ,
@To varchar(100) ,
@Subject varchar(100)=" ",
@Body varchar(4000) =" ",
@Attachment varchar(100) =" "

/*********************************************************************

This stored procedure takes the above parameters and sends an e-mail.
All of the mail configurations are hard-coded in the stored procedure.
Comments are added to the stored procedure where necessary.
Reference 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

--***************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("10.1.12.10").Value','2'
-- 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("10.1.12.10").Value', '10.1.12.10'

-- Save the configurations to the message object.
EXEC @hr = sp_OAMethod @iMsg, 'Configuration.Fields.Update', null

-- Set the e-mail parameters.
EXEC @hr = sp_OASetProperty @iMsg, 'To', @To
EXEC @hr = sp_OASetProperty @iMsg, 'From', @From
EXEC @hr = sp_OASetProperty @iMsg, 'Subject', @Subject

-- If you are using HTML e-mail, use 'HTMLBody' instead of 'TextBody'.
EXEC @hr = sp_OASetProperty @iMsg, 'TextBody', @Body
IF @Attachment<>''
BEGIN
EXEC @hr = sp_OAMethod @iMsg, 'AddAttachment', NULL,@Attachment
END
EXEC @hr = sp_OAMethod @iMsg, 'Send', NULL

-- Sample error handling.
IF @hr <>0
select @hr
BEGIN
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
END
ELSE
BEGIN
PRINT ' sp_OAGetErrorInfo failed.'
RETURN
END
END

-- Do some error handling after each step if you need to.
-- Clean up the objects created.
EXEC @hr = sp_OADestroy @iMsg

На одном из серверов работает уже несколько лет.
Проинсталлировал новый сервер, но на нем отсылка почты при помощи этой процедуры не проходит, хотя никаких сообщений об ошибке не получаю. Что можно проверить/попробовать ?
З.Ы. Сервера находятся в одной подсети, стартуют под одним пользователем домена
20 окт 04, 18:14    [1049792]     Ответить | Цитировать Сообщить модератору
 Re: CDOSYS  [new]
jimmers
Member

Откуда: Санкт-Петербург - New York City
Сообщений: 5069
Вы знаете, я бы начал с добавления обработчиков ошибок после каждого вызова sp_OA*. К примеру, после этой строки его нет в приведенном коде:

EXEC @hr = sp_OACreate 'CDO.Message', @iMsg OUT

Так что вот.
20 окт 04, 18:18    [1049809]     Ответить | Цитировать Сообщить модератору
 Re: CDOSYS  [new]
Игорь_В
Member

Откуда:
Сообщений: 8
Я проверил. После каждого вызова sp_OA* возвращается 0, что говорит о успешном выполнении, но почты нет. :-(
20 окт 04, 18:35    [1049868]     Ответить | Цитировать Сообщить модератору
 Re: CDOSYS  [new]
jimmers
Member

Откуда: Санкт-Петербург - New York City
Сообщений: 5069
Игорь_В
Я проверил. После каждого вызова sp_OA* возвращается 0, что говорит о успешном выполнении, но почты нет. :-(


Тогда имеет смысл проверить участок SQL Server - SMTP сервер - клиент. Это можно сделать при помощи сетевого монитора или посмотреть журналы SMTP сервера.
21 окт 04, 10:18    [1050694]     Ответить | Цитировать Сообщить модератору
 Re: CDOSYS  [new]
jimmers
Member

Откуда: Санкт-Петербург - New York City
Сообщений: 5069
Кстати, вот оригинальная статья Microsoft:
HOW TO: Send E-Mail Without Using SQL Mail in SQL Server
21 окт 04, 10:20    [1050702]     Ответить | Цитировать Сообщить модератору
 Re: CDOSYS  [new]
Игорь_В
Member

Откуда:
Сообщений: 8
Удалил процедуру, создал заново и все заработало :)
Спасибо всем
21 окт 04, 12:01    [1051102]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить