Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Отправка почты через объектную модель Outlook 2010 in SQL Server 2005/2008  [new]
vertum
Member

Откуда:
Сообщений: 30
Ищу примеры и материалы по данному вопросу (использование sp_OACreate 'Outlook.Application').
2 апр 12, 08:53    [12348838]     Ответить | Цитировать Сообщить модератору
 Re: Отправка почты через объектную модель Outlook 2010 in SQL Server 2005/2008  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10233
Блог
vertum
Ищу примеры и материалы по данному вопросу (использование sp_OACreate 'Outlook.Application').


зачем?

есть DB Mail

CLR на крайний случай - http://t-sql.ru/post/SMTPClr.aspx
2 апр 12, 10:27    [12349207]     Ответить | Цитировать Сообщить модератору
 Re: Отправка почты через объектную модель Outlook 2010 in SQL Server 2005/2008  [new]
vertum
Member

Откуда:
Сообщений: 30
Knyazev Alexey,

старое приложение использовало CDO модель...

Пришла мысль отправки через запрос

если кратко, то:

Проверка использования и отсылки через текущую учетку через VBSCRIPT:
//VBSCRIPT
wscript.echo "Отправка письма через объектную модель Outlook!"
Dim OutlookObject
Dim OutlookObjectMessage
set OutlookObject=CreateObject("Outlook.Application")
OutlookObject.GetNamespace("MAPI").Logon
set OutlookObjectMessage=OutlookObject.CreateItem(0)

With OutlookObjectMessage
.to="Кому@mail.ru"
.subject="Ваша тема!"
.body="Ваше сообщение!"
.send()
End With

Set OutlookObject = Nothing
wscript.echo "Ваше письмо отправлено!"
//

Сообщение отправлено. Все работает.

Далее пробую сделать на SQL Server 2005.

//

Declare
@hr int,
@ObjectIndex int,
@ObjectIndexMessage int,
@src varchar(255), @desc varchar(255)

EXEC @hr=sp_OACreate 'Outlook.Application', @ObjectIndex OUT
EXEC @hr = sp_OAMethod @ObjectIndex,'GetNamespace("MAPI").Logon'
EXEC @hr = sp_OAMethod @ObjectIndex, 'CreateItem', @ObjectIndexMessage OUT,0
EXEC @hr = sp_OASetProperty @ObjectIndexMessage, 'to', "Кому@mail.ru"
EXEC @hr = sp_OASetProperty @ObjectIndexMessage, 'subject', "Ваша тема!"
EXEC @hr = sp_OASetProperty @ObjectIndexMessage, 'body', "Ваше сообщение!"
EXEC @hr = sp_OAMethod @ObjectIndexMessage,'send()'
EXEC @hr=sp_OADestroy @ObjectIndexMessage
EXEC @hr=sp_OADestroy @ObjectIndex
//

И тут зависает на методе Send()...

Цель: отослать почту? используя текущую учетную запись Outlook
2 апр 12, 10:41    [12349270]     Ответить | Цитировать Сообщить модератору
 Re: Отправка почты через объектную модель Outlook 2010 in SQL Server 2005/2008  [new]
qwerty112
Guest
vertum,

а ты вызови перед send - display, - сразу поймёш причину
2 апр 12, 10:46    [12349304]     Ответить | Цитировать Сообщить модератору
 Re: Отправка почты через объектную модель Outlook 2010 in SQL Server 2005/2008  [new]
vertum
Member

Откуда:
Сообщений: 30
Declare
@src varchar(255),
@desc varchar(255)
-------------------


--Добавил после Body
EXEC @hr = sp_OAMethod @ObjectIndexMessage,'display'

IF @hr <> 0
BEGIN
EXEC sp_OAGetErrorInfo @ObjectIndexMessage, @src OUT, @desc OUT
SELECT hr=convert(varbinary(4),@hr), Source=@src, Description=@desc
RETURN
END
Outlook не запустился...
И тут :
0x80042725 | ODSOLE Extended Procedure | sp_OAMethod usage: ObjPointer int IN, MethodName varchar IN [, @returnval <any> OUT [, additional IN, OUT, or BOTH params]]
3 апр 12, 12:46    [12356346]     Ответить | Цитировать Сообщить модератору
 Re: Отправка почты через объектную модель Outlook 2010 in SQL Server 2005/2008  [new]
qwerty112
Guest
vertum
И тут зависает на методе Send()...

http://office.microsoft.com/ru-ru/outlook-help/HA001229943.aspx#BM3
3 апр 12, 13:00    [12356483]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить