Создание сообщения Outlook

Автор izvne, 4 марта 2013, 15:00

0 Пользователи и 1 гость просматривают эту тему.

izvne

Нужно из ОО создать письмо в outlook, указать адресат, прикрепить открытый файл, в теме прописать название файла. И всю эту красоту отправить, а файл закрыть и сохранить. С ОО дружу первые дни только.

Первый путь пример из гайда:
Sub UseOutlook( )
  Dim oOLEService
  Dim oOutlookApp
  Dim oOutlookMail

  oOLEService = createUnoService("com.sun.star.bridge.OleObjectFactory")
  oOutlookApp = oOLEService.createInstance("Outlook.Application")
  oOutlookMail = OOUTLOOKAPP.CREATEITEM(0)

  oOutlookMail.To = "andrew@pitonyak.org"
  oOutlookMail.Subject = "Test Subject"
  oOutlookMail.Body = "This is my body text for the email message"
  'oOutlookMail.Attachments.Add("C:\foo.txt")

  'oOutlookMail.Display()
  'oOutlookMail.send()
End Sub

Но не завелось.

Второй путь такой:
sub Main
dim document   as object
dim dispatcher as object

document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

dispatcher.executeDispatch(document, ".uno:SendMail", "", 0, Array())

end sub

Но куда здесь подпихнуть адресата  ???


izvne

#2
Цитата: Yakov от  4 марта 2013, 15:15
http://forumooo.ru/index.php/topic,2639.0.html
Именно на ту тему и перешел по яндексу. Но не смог разобраться в коде. При тупом копировании выполняет только создание письма с прикреплением файла. Грубо говоря только ".uno:SendMail"

В первом же приведенном мной варианте ругается "Переменная типа Object не установлена." Может, библиотеки не хватает какой =/

Yakov

#3
sub Mail
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")


dim argsMail(0) as new com.sun.star.beans.PropertyValue
argsMail(0).Name = "Recipient"
argsMail(0).Value = "my@mail.ru"

dispatcher.executeDispatch(document, ".uno:SendMail", "", 0,argsMail())

end sub

izvne

#4
Цитата: Yakov от  4 марта 2013, 14:40sub Mail
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")


dim argsMail(0) as new com.sun.star.beans.PropertyValue
argsMail(0).Name = "Recipient"
argsMail(0).Value = "my@mail.ru"

dispatcher.executeDispatch(document, ".uno:SendMail", "", 0,argsMail())

end sub
Спасибо за желание помочь. Но этот кусок я сумел понять и применить )) Как при таком распкладе указать тему письма? И аутлук начинает матюгаться, что стороння программа пытается получить доступ. Просто по событию .uno:SendMail такого не происходит =/

Yakov

Тогда такой код. А в Outlook надо отключит запрос на предупреждение в отправке от имени пользователя.


sub Mail
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")


dim argsMail(1) as new com.sun.star.beans.PropertyValue
argsMail(0).Name = "Recipient"
argsMail(0).Value = "my@mail.ru"
argsMail(1).Name = "Subject"
argsMail(1).Value = "mySubject"


dispatcher.executeDispatch(document, ".uno:SendMail", "", 0,argsMail())

end sub


ape

Извините, я так и не понял, о чём разговор:
Цитата: izvne от  4 марта 2013, 15:00
Нужно из ОО создать письмо в outlook, указать адресат, прикрепить открытый файл, в теме прописать название файла. И всю эту красоту отправить, а файл закрыть и сохранить...
Но куда здесь подпихнуть адресата  ???
Т.е кто есть "Аутлук": OE-6, MSO-2010...

Yakov

#7
в данном контексте
outlook = почтовый клиент по-умолчанию
Это может быть Outlook express, Outlook, Mozilla Thunderbird, ...

Но самый первый код из 1 сообщения

Sub UseOutlook( ) 
может работать только с Outlook и НЕ БУДЕТ работать с Outlook Express,  Mozilla Thunderbird и т.д.

ape

Yakov! У меня в дистрибутивах ещё на стадии создания CD "Win_XP.." ОЕ-6 удалён. Это исключает некоторые возможности, например:
- Outlook_XP\2003 не работает;
- Winword_любой не может преобразовать MHT-архивы в текстовые документы..
--
1. Скажется ли такой модинг на Ваших примерах?
2. Работают ли макросы с Оперой?

Yakov

Должен быть  e-mail клиент. Без него работать не будет. Сам OpenOffice/LibreOffice не может работать с почтой без внешнего e-mail клиента.


izvne

Цитата: Yakov от  5 марта 2013, 09:50outlook = почтовый клиент по-умолчанию
Всё верно. Хотя я имел ввиду конкретно Outlook 2010. Есть необходимость юзать ООо для таблиц, т. к. exel постоянно занять выполнением своих макросов.

Цитата: Yakov от  5 марта 2013, 09:50Код:
Sub UseOutlook( )  
может работать только с Outlook и НЕ БУДЕТ работать с Outlook Express,  Mozilla Thunderbird и т.д.
Почему-то не работает =/ Может, где-то связь надо указать? В строке
oOutlookMail = OOUTLOOKAPP.CREATEITEM(0)
твердит "Переменная типа OBJECT не установлена."

Yakov

Проверил с Outlook 2003 - работает.
Может быть при установке Outlook не установлен VBA?

izvne

Цитата: Yakov от  5 марта 2013, 16:59Проверил с Outlook 2003 - работает.
Может быть при установке Outlook не установлен VBA?
Да нет, он тоже крутит макросы =/ У вас ООо из коробки? Может, расширения какие или настройки. Вроде уже всё облазил. Ошибку BASIC выдает ООо.

Yakov

Ошибка заключается в невозможности инициализации  OLE объекта Outlook.
Может, в 2010 Outlook поменяли объектную модель?
Я проверял с 2003.

Hasim

#14
Цитата: izvne от  5 марта 2013, 13:27
oOutlookMail = OOUTLOOKAPP.CREATEITEM(0)

твердит "Переменная типа OBJECT не установлена."

Парадоксы OpenOffice - зависимость от регистра:

'  oOutlookMail = OOUTLOOKAPP.CREATEITEM(0)    '<- Ошибка!

 oOutlookMail = oOutlookApp.CreateItem(0)     '<- Работает!!!