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

Откуда:
Сообщений: 1017
Мне надо отправлять сообщения из SQL2000 через CDO, сделал процедуру, она работает, но вот приатачить файл не получается (приходит только сообщение, а файлов нету!)


/*********************************************************************
См. ссылку CDOSYS objects по следующему адресу MSDN Web site:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cdosys/html/_cdosys_messaging.asp
***********************************************************************/

CREATE PROCEDURE dbo.p_send_cdosysmail
@To VARCHAR(100),
@From VARCHAR(100),
@Subject VARCHAR(100)=" ",
@Body VARCHAR(4000)=" ",
@CC VARCHAR(100)=NULL,
@BCC VARCHAR(100)=NULL
AS
SET NOCOUNT ON
DECLARE @iMsg INTEGER, @hr INTEGER, @source VARCHAR(255), @description VARCHAR(500), @output VARCHAR(1000),
@SMTPServerName VARCHAR(100)

SET @SMTPServerName='192.168.1.3' -- Указываем имя или IP-адрес SMTP-сервера, например, 'localhost'

EXEC @hr=sp_OACreate 'CDO.Message', @iMsg OUT
-- Конфигурируем удалённый SMTP-сервер:
-- http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cdosys/html/_cdosys_schema_configuration_sendusing.asp
-- 1=значит отсылка сообщения будет осуществляться через локальный SMTP-сервер
-- 2=значит отсылка сообщения будет осуществляться через SMTP-сервер домена
EXEC @hr=sp_OASetProperty @iMsg, 'Configuration.fields("http://schemas.microsoft.com/cdo/configuration/sendusing").Value','2'

EXEC @hr=sp_OASetProperty @iMsg, 'Configuration.fields("http://schemas.microsoft.com/cdo/configuration/smtpserver").Value', @SMTPServerName
EXEC @hr=sp_OAMethod @iMsg, 'Configuration.Fields.Update', null -- Устанавливаем конфигурацию message-объекта

EXEC @hr=sp_OASetProperty @iMsg, 'To', @To
EXEC @hr=sp_OASetProperty @iMsg, 'From', @From
EXEC @hr=sp_OASetProperty @iMsg, 'CC', @CC
EXEC @hr=sp_OASetProperty @iMsg, 'BCC', @BCC
EXEC @hr=sp_OASetProperty @iMsg, 'Subject', @Subject


-----------------------------------------------------------------------------
---------- файл берётся с локальной машины относительно доменного сервера
---------- диск С на рабочей станции SASHA расшарен
EXEC @hr=sp_OASetProperty @iMsg, 'AddAttachment', '\\SASHA\C\a.txt'
-----------------------------------------------------------------------------




-- If you are using HTML e-mail, use 'HTMLBody' instead of 'TextBody'.
EXEC @hr=sp_OASetProperty @iMsg, 'TextBody', @Body
EXEC @hr=sp_OAMethod @iMsg, 'Send', NULL


-- Если указан НЕкорректный e-mail адрес, то будет возвращён код 2147220977.
-- Если указан НЕкорректное имя MAIL Server-а, то будет возвращён код -2147220973
IF @hr <>0
SELECT @hr
BEGIN
EXEC @hr = sp_OAGetErrorInfo NULL, @source OUT, @description OUT
IF @hr=0
BEGIN
SELECT @output = ' Источник: ' + @source
PRINT @output
SELECT @output = ' Описание: ' + @description
PRINT @output
END
ELSE
BEGIN
PRINT ' p_OAGetErrorInfo ошибка!'
RETURN
END
END
EXEC @hr = sp_OADestroy @iMsg


/*
-- Пример вызова:
DECLARE @RC INTEGER, @PrnLine NVARCHAR(4000)

EXEC @RC = dbo.p_send_cdosysmail
@To='to@mail.ru',
@From='from@rambler.ru',
@Subject='Привет',
@Body=проверка' --, ' ', ' '

SELECT @PrnLine='Код возврата хранимой процедурыdbo.p_send_cdosysmail = '+CONVERT(NVARCHAR, @RC)
PRINT @PrnLine
*/
12 сен 03, 12:08    [336470]     Ответить | Цитировать Сообщить модератору
 Re: Рассылка через CDO - как аттачить файлы?  [new]
Inna
Member

Откуда: Гамбург
Сообщений: 88
Попробуйте так:
EXEC @hr=sp_OAMetod @iMsg, 'AddAttachment', NULL, '\\SASHA\C\a.txt'
16 сен 03, 14:51    [340789]     Ответить | Цитировать Сообщить модератору
 Re: Рассылка через CDO - как аттачить файлы?  [new]
!!! Доброжелатель !!!
Member

Откуда: Москва
Сообщений: 24
Хочу сразу предупредить что использование ActiveX объектов приводит к утечке ОП и через некоторое время SQL server остановится.
16 сен 03, 15:28    [340884]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить