Форум продуктов IBM Lotus

Продукты IBM Lotus => IBM Lotus Notes & Domino => Тема начата: ol_x от 20 Июнь 2012, 15:47:12

Название: Отправка копии письма.
Отправлено: ol_x от 20 Июнь 2012, 15:47:12
Доброго всем времени суток!

Как реализовать теневое копирование отправленного письма. Посмотрел simple action, там отрабатывается событие при получении письма, при отправке никаких событий нет.

Мысли были переписать код "Отправить"

MEMO_SEND:="1024";
FIELD ActionInProgress:=MEMO_SEND;
@If(@Command([FileSave]);@Command([FileCloseWindow]);@Return(""))

но так и не получилось вернуть значение body

Направьте на правильный путь плиз.
Название: Отправка копии письма.
Отправлено: ViV от 21 Июнь 2012, 11:43:01
Добрый день!

Какая перед вами стоит задача? Вам нужно, чтобы все отправляемые письма пользователей копировались в какую-то базу?
Название: Отправка копии письма.
Отправлено: ol_x от 21 Июнь 2012, 12:17:30
Не совсем так... все письма и так заносятся в журнал. Задача стоит такая: влепить теневую отправку почты недобросовестных сотрудников на определенный ящик для дальнейшего анализа, чтобы они этого не видели и не знали об этом.
Название: Отправка копии письма.
Отправлено: ViV от 21 Июнь 2012, 12:24:27
Попробуйте воспользоваться серверными почтовыми правилами
Название: Отправка копии письма.
Отправлено: ol_x от 21 Июнь 2012, 14:30:43
Серверные почтовые правила отрабатывают только следующие действия:

- занести это сообщение в журнал
- переместить в базу данных
- не принимать сообщение
- изменить состояние маршрутизации
- остановить обработку

Второе действия бы подошло, если бы письмо еще уходило по своему прямому адресу, а не тупо перемещало в другую базу.
Название: Отправка копии письма.
Отправлено: ViV от 21 Июнь 2012, 14:47:26
А если выбрать второй пункт и указать две базы: базу куда копировать и серверный mail.box?
Название: Отправка копии письма.
Отправлено: ol_x от 21 Июнь 2012, 15:16:01
Он не копирует, а перемещает. Попробовал, не то.
Название: Отправка копии письма.
Отправлено: ol_x от 21 Июнь 2012, 17:02:39
Нашел подходящий кусок кода... только клиент ругается, что переменная не определена, что очень странно, ибо код брался с документации лотусни.

Sub Click(Source As Button)
 Dim session As New NotesSession
 Dim workspace As New NotesUIWorkspace
 Dim db As NotesDatabase
 Dim uidoc As NotesUIDocument
 Dim doc As NotesDocument, doc2 As NotesDocument
 Dim item As NotesItem
 Set uidoc = workspace.CurrentDocument
 Set doc = uidoc.Document
 Set db = session.CurrentDatabase
 Set doc2 = New NotesDocument(db)
 Set item = doc.GetFirstItem("Subject")
 Call item.CopyItemToDocument(doc2, "Subject")
 Set item = doc.GetFirstItem("Body")
 Call item.CopyItemToDocument(doc2, "Body")  'ругается в этом месте
 Call doc2.Send(True, "Marketing")
End Sub

В принципе, если бы был рабочий, на его основе можно было переделать Lotus Formula (кода "Отправить") в LotusScript, добавив в этот код сохранение и закрытие, чтобы юзверь не отличил на глаз изменения в действиях при отправке письма.
Название: Отправка копии письма.
Отправлено: ViV от 21 Июнь 2012, 17:33:24
Можно в почтовом шаблоне для кнопок отправки добавить @MailSend("Marketing")
Название: Отправка копии письма.
Отправлено: ol_x от 21 Июнь 2012, 17:48:39
В таком случае письмо улетает пустым: без темы и без тела...
Название: Отправка копии письма.
Отправлено: ViV от 21 Июнь 2012, 18:55:28
Ок, можно углубиться и добавить код в библиотеку отправки.

Для этого, в скриптовой библиотеке CoreEmailClasses, в функции QuerySave класса UIMemoDocument
в начале функции после строки
On Error Goto TRAP

добавить код:

Dim mdoc As NotesDocument
Set mdoc =  Me.m_db.Createdocument()

Call mdoc.Replaceitemvalue("SendTo", "Marketing")
Call mdoc.Replaceitemvalue("Body", Me.m_noteUIMemo.Fieldgettext("Body"))
Call mdoc.Replaceitemvalue("Subject", Me.m_noteUIMemo.Fieldgettext("Subject"))
Call mdoc.Send(False)
Название: Отправка копии письма.
Отправлено: ol_x от 22 Июнь 2012, 09:10:15
Ругалось на m_db. Сделал вот так:

Set mdoc = Me.m_session.Currentdatabase.Createdocument()
Все классно! Но если есть вложения в письма, они не прилетают.
Название: Отправка копии письма.
Отправлено: ol_x от 22 Июнь 2012, 10:06:34
        Set mdoc = Me.m_session.Currentdatabase.Createdocument() 
        Call Me.m_noteUIMemo.Document.Copyallitems(mdoc, True)

        Call mdoc.Replaceitemvalue("Body", Me.m_noteUIMemo.Fieldgettext("Body"))

        Call mdoc.Replaceitemvalue("CopyTo", "")
Call mdoc.Replaceitemvalue("BlindCopyTo", "")
        Call mdoc.Replaceitemvalue("SendTo", "10v. Marketing")
               
        Call mdoc.Send(False)

Вот так вроде все работает... хотя не уверен, что кодестайл, но это уже самое последнее дело )
Название: Отправка копии письма.
Отправлено: ol_x от 22 Июнь 2012, 10:35:07
пытаюсь открыть CoreEmailClasses, открывается не понять что... Интересно, и как в первый раз открылось

%REM
   Library CoreEmailClasses_ru-RU
   Created Jun 22, 2012 by admin SYSTEM/
   Description: Comments for Library
%END REM
Option Public
Option Declare

Название: Отправка копии письма.
Отправлено: ol_x от 22 Июнь 2012, 12:39:02
Проглючило дизайнер.

Теперь следующий вопрос:

как от этого избавится
Название: Отправка копии письма.
Отправлено: ViV от 22 Июнь 2012, 13:01:31
Так как вы пересохранили скрипт, он подписался вашим ID-файлом.
Возможно какие-то серверные агенты используют измененную библиотеку. Тогда этот админ должен быть прописан в серверном документе на вкладке Security в разделе Programmability  Restrictions.

У пользователя скорее всего выскочит такое окно. Если он выберет последний пункт, то оно больше не вылезет.
Чтобы этого окна вообще не появлялось, нужно чтобы у пользователей в ECL был добавлен ваш админ. это можно сделать серверными политиками.
Название: Отправка копии письма.
Отправлено: ol_x от 22 Июнь 2012, 14:44:12
Политику я создал... только вот не могу найти, как ее применить. Нашел только инфу, что политики обновляются каждые 12 часов.
Название: Отправка копии письма.
Отправлено: ViV от 22 Июнь 2012, 14:52:25
На форуме обсуждалось, поищите. Например, http://www.lotusnotes.ru/forum/index.php/topic,696.msg2766.html#msg2766
Название: Отправка копии письма.
Отправлено: ol_x от 22 Июнь 2012, 16:03:49
Так, что я сейчас имею:

Создал настройку "Admin ECL" (Параметры безопасности),  где в административной СУВ в -Default- добавил запись админа для Workstation security и запретил изменения этой настройки.
Создал  организационную политику, как я понял, должна применяться для всех юзверей, */Verify (система сама подставила */, не вникал зачем... но хотелось бы знать для чего), в которой в качестве параметров безопасности указал Admin ECL.
Выполнил в консоли команду "Tell adminp process mail policy", при этом система выдала: completed refresh of mail policies for 0 databases... может тут и не mail надо.

Кругом голова от английских текстов... на сегодня уже каша в голове и думать уже нету сил, что делать дальше.
Название: Отправка копии письма.
Отправлено: ol_x от 23 Июнь 2012, 11:40:03
Забавная штука, этот лотус.
Судя по документации, локальный клиент при авторизации на сервере сравнивает хэши политик, если они разнятся, клиент обновляет/заменяет локальную политику с помощью тулзы Dyncfg.exe, которую разрабы не рекомендуют запускать самостоятельно.
Хотя есть еще один способ типа обновления политик: "IBM предлагает другой способ запуска - в персональной адресной книге нужно удалить документ "Preferences" (Actions => Remove Address Book Preferences)." - костыли, они везде. Собственно, на автомате при авторизации никакого обновления настроек в нужном мне месте не происходит. Хотя на клиенте 8,5 при обновлении ручками в безопасности ECL, он все-таки подхватывает явную политику. А на 7 клиенте, при таком способе политики, он все-равно выдает оповещение о безопасности.

В чем принципиальная разница между способом применения политики к юзверю. Документально я наткнулся на два способа: в доке политике и в персональном доке.

И теперь самое интересный вопрос: каков же принцип отката назад всех изменений. Предлагается такая функция: clear any assigned policies... работает очень веселым способом: если политика применена в персональном документе, тупо ставится пустое поле, в другом случае вообще ругается, что политика не применена. Забавно еще, что политика все-равно остается примененной на локальной машине, учитывая факт, что по хэшу политики все-равно не обновляются. Опять тут IBM предлагает костыль: политику на политику.

С организационной политикой все на первый взгляд проще, можно выбрать при регистрации (собственно по докам не понятно, то ли это для статических настроек, то ли для динамических). Остановило одно, юзвери уже зареганы, а документации по переопределению сертификатов для id`шки мне на глаза не попалось. Хотелось бы, конечно, узнать поподробнее об этом.
Название: Отправка копии письма.
Отправлено: ol_x от 24 Июнь 2012, 12:03:02
Если удалить локальную папку лотуса и настроить клиент еще раз, он без проблем подтягивает политику.
Если нажать ctrl+shif+f5, клиент отключиться от сервера и при подключении обновит политику, но при этом выскочит окно безопасности о согласии доверять админу.

Как же все-таки это должно происходить?
Название: Отправка копии письма.
Отправлено: ViV от 03 Июль 2012, 10:30:16
Глубоко вы копнули) Спасибо, что описали процессы.
Если такая заморочка с политиками, может проще оповестить пользователей, чтобы они утвердили всплывающее окно?
Название: Отправка копии письма.
Отправлено: ol_x от 05 Июль 2012, 13:11:51
Собственно так и сделал. Хотелось бы, конечно, капнуть глубже, но моя организация не оплатит мою учебу )