• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Vbscript: Обработка непрочитанных сообщений с вложениями

  • Автор темы lsv
  • Дата начала

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
217
если на раб. станции lotus не установлен, то способа установить соединение с базой для последующей работы со вложениями нет?
у меня открыт доступ на Design Folder. С помощью данной опции можно настроить правила обработки вложений?
с "удаленной базой", есть - CORBA называется :)
др. словами - "серверная" часть нужна, её роль либо выполняет сам клиент и задействуются мс пердульки типа комы, либо вызывается сервер "по сети" с соответ. интерфейсом (из доступных - CORBA)
 
L

lsv

Есть, по COM, т.е. точно также, как вы и делаете.
Но через COM многие методы не работают. Вернее они изначально не предназначались для работы через COM. В хэлпе по методам смотрите, если там вверху в перечне есть "COM", значит должно работать.

По 2-му предложению ничего не понял.
в Lotus, если правой кновкой мыши кликнуть на созданной папке в Folders, будет опция "Design Folder".
 
L

lsv

с "удаленной базой", есть - CORBA называется -_-
др. словами - "серверная" часть нужна, её роль либо выполняет сам клиент и задействуются мс пердульки типа комы, либо вызывается сервер "по сети" с соответ. интерфейсом (из доступных - CORBA)
это мне не осилить
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
217
это мне не осилить
ну эт вы зря -_- - там всего один файл (java либа), кот. суть интерфейс к вызовам, единственное - код д.б. на java
с др. стороны - по объектному виду он мало отличается от VB/LS
 

VladSh

начинающий
Lotus Team
11.12.2009
1 786
157
BIT
80
lmike
Человеку, который далёк от программирования, вся эта петрушка напоминает крестики-нолики.
 

savl

Lotus Team
28.10.2011
2 599
311
BIT
193
lmike
Может тогда напишите и дадите человеку готовый скрипт? С описанием как пользоваться.
Подарок на НГ так сказать.
 

savl

Lotus Team
28.10.2011
2 599
311
BIT
193
Основная проблема почему второй пользователь не автор для входящего письма, причем даже на уровне editor.
lsv
Можете определить на какой строке выпадает ошибка: Notes error: You cannot update or delete the document(s) since you are not listed as an allowable Author for this document. ?
Print или как еще можно вывести...
Подозреваю что на сохранении, но хотелось бы уточнить.
 
L

lsv

Основная проблема почему второй пользователь не автор для входящего письма, причем даже на уровне editor.
lsv
Можете определить на какой строке выпадает ошибка: Notes error: You cannot update or delete the document(s) since you are not listed as an allowable Author for this document. ?
Print или как еще можно вывести...
Подозреваю что на сохранении, но хотелось бы уточнить.
точно, на этой: Call doc.Save( False, False, True )

Вместо этого метода, пытался использовать Call doc.PutInFolder("Processed")(Processed - это папака в Folders), что бы при последующем запуске скрипта, он обрабатывал только новые сообщения в Inbox. Выдаёт ошибку "Notes error: You are not autorized to perform that operation".

Оказывается, у второго пользователя нет прав для создания папок, соответственно я не могу переместить обработанные сообщения с вложениями в папку Processed из Inbox.

Получается, что нет прав для пометки сообщений прочитанными (You cannot update or delete the document(s) since you are not listed as an allowable Author for this document.), метод Call doc.Save( False, False, True ) так же не работает.
UnprocessedDocuments, markAllRead и т.п. методы в VBScript (COM) не работают.

Получается, у меня есть скрипт, который может сохранять вложения из писем, приходящих второму пользователю, но у меня нет возможности сделать так, что бы он не брал их в обработку повторно. :) бред
 

savl

Lotus Team
28.10.2011
2 599
311
BIT
193
Прикольно :)
Попробуй сделать:
Код:
Call doc.MarkUnread()
Вместо Save
 

savl

Lotus Team
28.10.2011
2 599
311
BIT
193
"забавно чо"...
Все равно интересная "засада"... намного интереснее чем моя инструкция пользователя...
А последовательность шагов какая?
пример: 1. Открываю лотус 2. пишу письмо 3. закрываю лотус 4. запускаю скрипт
 
L

lsv

"забавно чо"...
Все равно интересная "засада"... намного интереснее чем моя инструкция пользователя...
А последовательность шагов какая?
пример: 1. Открываю лотус 2. пишу письмо 3. закрываю лотус 4. запускаю скрипт

без запущенного лотуса vbscript скрипт работать не будет :)

послед. такая:

1. скрипт шедулером запускается каждую минуту
2. смотрит почту на предмет наличия письма с вложение
3. сохраняет влож. на сетевой диск
 

VladSh

начинающий
Lotus Team
11.12.2009
1 786
157
BIT
80
lsv
Вот к 35-му сообщению и до сути дела дошли.
Есть тема напиши свой Notes Minder, собственно можно попросить Морфиуса доработать, - опцию какую-нить добавить для сохранения вложений. Гарантии нет, но "а вдруг"?
Добавлено: наверное такой функционал добавлять не сильно интересно, но вот добавить возможность выполнения внешнего кода, это интересно! Например Майндер определяет массив UNID'ов новых (непрочитанных) доков и вызывает для них скрипт (передаёт этот массив в скрипт).
 
L

lsv

lsv
Вот к 35-му сообщению и до сути дела дошли.
Есть тема напиши свой Notes Minder, собственно можно попросить Морфиуса доработать, - опцию какую-нить добавить для сохранения вложений. Гарантии нет, но "а вдруг"?
Добавлено: наверное такой функционал добавлять не сильно интересно, но вот добавить возможность выполнения внешнего кода, это интересно! Например Майндер определяет массив UNID'ов новых (непрочитанных) доков и вызывает для них скрипт (передаёт этот массив в скрипт).
мне удалось выбить из админов права editor для второго пользователя, т.о. я добился того, что сначала сообщение помещается в папку processed, потом удаляется из inbox, вложения сохраняются на сетевой диск и пишется автоответ. поставил скрипт в шедулер на выполнение каждую минуту, т.ч., в принципе, задача выполнена, НО
также, как и Notes Minder, скрипт без установленного Lotus на раб. станции работать не будет.
Правильно я понял, что без установленного Lotus'а, подконнектиться к ящику стандартными vbscript средствами не возможно?

Добавлено: кому интересно, итоговый скрипт:
Код:
Dim Session
Dim Maildb
Dim view
Dim doc
Dim x
Set Session = CreateObject("Lotus.NotesSession")
Call Session.Initialize("password")
Set Maildb = Session.GetDatabase("SERVER/LOTUS/DOMEN/RU", "GroupMail\mail.nsf")
Set view = Maildb.GetView("($inbox)")

If Not Maildb.IsOpen Then
If Not Maildb.Open Then Exit Sub
End If

With view
x = 0
ReDim LmailID(x)

Set doc = .GetFirstDocument
If doc Is Nothing Then
MsgBox "No letters"
WScript.Quit()
Else
Call doc.PutInFolder("Processed")
Call doc.Removefromfolder("($inbox)")

Do
fileNames = Session.Evaluate("@AttachmentNames", doc)
For Each Filename In fileNames
If Filename <> "" Then
If Right(Filename, 3) = "txt" Then
Call doc.Save(False, False, True)

Set NotesEmbeddedObject = doc.GetAttachment(Filename)
NotesEmbeddedObject.ExtractFile("\\server\d$\folder\" + Filename)

Set reply = doc.CreateReplyMessage(False)
Call reply.replaceItemValue("Subject", "done" + Filename)
Call reply.Send(False)
End If
End If
Next

x = x + 1
ReDim Preserve LmailID(x)
Set doc = .GetNextDocument(doc)
Wscript.Sleep 500
Loop Until doc Is Nothing
End If
End With

Set doc = Nothing
Set view = Nothing
Set Maildb = Nothing
Set Session = Nothing
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
217
Правильно я понял, что без установленного Lotus'а, подконнектиться к ящику стандартными vbscript средствами не возможно?
коротко - да...
давайте расуждать:
-как можно использовать "чужой ф-ционал"? - через "некий" АПИ
-как АПИ реализуется? - "чужие" длл, вызовы по стандартным протоколам, кот. поддерживаются ОС и её ср-вами

в случае домины, "чужие длл", существуют тока в виде полного клиента/сервера нотус (ну вот так индусы любят писать)
реализованы стандартные "протоколы" взаимодействия, в домине: IMAP, SMTP, POP3, , ну это не протокол ;), а вот IIOP - что уже протокол

мелкомягкость проталкивала/ет свои COM, DCOM и заморачиваться на стандарты не собиралась/не собирается (свои плодит)
а по сему, как факт - CORBA для VB - это из области маловероятного

"не долго задумываясь" ИБМ просто сделала java либу, кот. и позволяет взаимодействовать с сервером домины, поверх http/https
Designer requirements
Compilation of a Java program using the lotus.domino package requires installation of Domino Designer Release 5 or greater.
For stand-alone applications, include Notes.jar from the Notes program directory and domino\java\NCSO.jar or domino\java\NCSO.cab from the Notes data directory in the classpath. For example:
set CLASSPATH=.;c:\notes\data\domino\java\NCSO.jar;c:\notes\Notes.jar
Notes.jar contains the high-level lotus.domino package, the lotus.domino.local package for local calls, and the old lotus.notes package. The NCSO archive contains the high-level lotus.domino package and the lotus.domino.cso package for remote calls. Strictly, you do not need the NCSO archive if you are not compiling remote calls and you do not need Notes.jar if you are not compiling local calls or old calls.
The two NCSO archives have identical content but differ in the archiving technique:
NCSO.jar uses the JDK JAR utility with compression.
NCSO.cab uses the Microsoft CABARC utility.
Note Earlier releases used NCSO.jar (uncompressed) and NCSOC.jar (compressed).
Your class code must import the high-level lotus.domino package:
import lotus.domino.*;
разумеется что Notes.jar не будет работать без "клиента нотус", но вот для "удалённых" вызовов достаточно NCSO.jar
а учитывая что и МС похоронила свой ВБ - никто не расстраивается, а просто - учит java :)
 

VladSh

начинающий
Lotus Team
11.12.2009
1 786
157
BIT
80
lsv
Подправил код в Вашем сообщении.
НО
также, как и Notes Minder, скрипт без установленного Lotus на раб. станции работать не будет.
Правильно я понял, что без установленного Lotus'а, подконнектиться к ящику стандартными vbscript средствами невозможно?
Ну а как скрипт узнает о Lotus-классах? При установке клиента в реестре регятся компоненты OLE и COM, которые и открывают возможность внешним прогам использовать Lotus-классы. Поэтому лучше бы это было в агентах почтового ящика, чтобы от этого всего не зависеть.

lmike
Уже увидел твоё сообщение позже.
Дай тогда ссылки, в какую сторону копать. А если ссылки даже на код, то тоже не постесняемся)), тема интересная.
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
217
VladSh я активно темой не занимался, были где-то тесты (всё работало), просто не возникало активной надобности, в хэлпе достаточно подробно описано...
минимальная настройка на сервере - задачи http, diiop, интернет пароль у юзера
для https придется еще (после запуска задач) скачать на локал сертификат (TrustedCerts.class) - он на сервере появится, разумеется, что все остальные настройки https должны быть выполнены (но это не касается напрямую diiop)
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!