• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Почта Lotus

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

sanch

Доброго времени суток!!!
Задача: необходимо почту сортировать по папкам. к примеру письма от Иванова сохранять в папку Иванов. (Вариан с правилами не катит).Нужен агент который запускается при новом письме,проверяет если от папок с фамилией чела нет то создает новую папку и перебрасывает письмо в папку, если есть то просто перебрасывает.
Подскажите как правильней реализовать данную задачу, или поделитесь скриптом.
 
E

Elena Nefedova

Задача: необходимо почту сортировать по папкам. к примеру письма от Иванова сохранять в папку Иванов.
Думаю, надо не папки создавать, а фильтр применять к представлению, раз у вас ключ только один.
Отлично подходит формула @SetViewInfo
 
S

sanch

Думаю, надо не папки создавать, а фильтр применять к представлению, раз у вас ключ только один.
Отлично подходит формула @SetViewInfo
Человек попросил чтоб были папки(на каждую фамилию - папка).Можно было бы решить проблему "правилом" 100-400 правил писать для каждого это не дело просто нужен гибкий скрипт

Ты же все правильно написал.
В чем вопрос/проблема или тебе просто скрипт нужен?
Если чесно, да, нужен скрипт.Поделитесь если есть )
 
N

nor

Не думаю, что 100-400 папок в почтовой бд будет тоже удобно. Попробуй категоризовать колонку "Who" в папке Inbox - тогда все письма от определенного человека будут отображаться в одной категории, от другого человека - в другой. Например, у меня так сделано, очень удобно.
 
S

sanch

Не думаю, что 100-400 папок в почтовой бд будет тоже удобно. Попробуй категоризовать колонку "Who" в папке Inbox - тогда все письма от определенного человека будут отображаться в одной категории, от другого человека - в другой. Например, у меня так сделано, очень удобно.
Этот вариант я сразу предложил, но человек просит чтоб именно папки были((
 
E

Elena Nefedova

Этот вариант я сразу предложил, но человек просит чтоб именно папки были((
1) Если пользователь в лотусе не понимает, надо эмулировать папки. На самом деле это будут Action-ы, применяющие фильтр
2) А если понимает и все равно требует, значит, плохо он понимает, но сделать придется именно так, как он сказал

Чем хорош первый случай - нельзя перепутать документы, перетащив их в "чужую" папку.
Главная же радость от него - легко реализовать чтоб автоматически и все отправленные сообщения раскладывались по этим папкам.

Если уж второй придется реализовывать, то в агенте на приход почты надо использовать следующие свойства и методы
Код:
notesViewArray = notesDatabase.Views  
flag = notesView.IsFolder
Set notesView = notesDatabase.CreateView(...)
Call notesDocumentCollection.PutAllInFolder( folderName$ [, createonfail ] )
Call notesDocumentCollection.RemoveAllFromFolder( folderName$ )
3) Сама я влезла в их библиотки почтовых правил и приписала себе там достаточно.
Если не боитесь сломать - можете тоже поручть свои проблемы роутеру :)
 
S

sanch

notesViewArray = notesDatabase.Views
flag = notesView.IsFolder
Set notesView = notesDatabase.CreateView(...)
Call notesDocumentCollection.PutAllInFolder( folderName$ [, createonfail ] )
Call notesDocumentCollection.RemoveAllFromFolder( folderName$ )
Большое спасибо. Но я не знаю LotusScript, а начальство давит.Если есть возможность пришлите пожалуйста весь скрипт.Если можно с небольшим описанием ) .Заранее благодарен
 
S

sanch

Вчера сидел "грыз LotusScript" вроде чего то получилось. Но есть небольшая проблемка.Открываю базу, запускаю агента, агент нормально отработал,НО!!! увидеть новую созданную папку можно только после повторного открытия базы.Может ее можно програмно обновить? или как?.( Пробовал решить проблему на Java, но с папками проблема была еще хуже(папки появлялись только после создания новой папки, в базе ,руками).)
И еще вопрос.Как указать в скрипте что надо проверять только папку Index(Входящие)?
И последний )).скрипт создает папку и копит туда письма.Что он копит весь документ или ссылку?
 
S

sanch

И еще )) .Как в LotusScript в строку передать двойные кавычки?
 
M

morpheus

Как указать в скрипте что надо проверять только папку Index(Входящие)?

явно прописать в переменной
Set view = db.GetView( "($Inbox)" )

Код:
Dim db As New NotesDatabase( "Havana","mail\cbanner.nsf" )
Dim view As NotesView
Dim doc As NotesDocument
Set view = db.GetView( "($Inbox)" )
Set doc = view.GetFirstDocument
 
E

Elena Nefedova

скрипт создает папку и копит туда письма.Что он копит весь документ или ссылку?
При использовании PutInFolder помещаются ссылки. При использовании любых видов копирования в базе создается копия, а ссылка на копию уже размещается в нужной папке.
И еще )) .Как в LotusScript в строку передать двойные кавычки?
Вот так:
Код:
s_quotes1 = "Я люблю шоколад ""Аленка"" и ириски"
s_quotes2 = {Мой брат не любит ни "Аленку" ни ириски}
 
S

sanch

И еще вопросик! как работать со строками? к примеру есть строка "cn=vasya/o=rabota" как сделать чтоб осталось только "vasya"?
 
M

morpheus

Из справка Lotus
1. This example returns CN=Robert T. Katsushima/OU=JPN/O=Acme if this is the name associated with the current user ID.
@UserName(0)
2. This example returns Robert T. Katsushima.
@Name([CN];@UserName)
3. This example returns CN=Rob Katsushima/OU=JPN/P=Acme if this is the first alternate name associated with the current user ID.
@UserName(1)
4. This example returns Fletcher if William Fletcher is the name associated with the current User ID.
@Right(@UserName;" ")
5. This example returns FLETCHER if William Fletcher is the name associated with the current User ID.
@UpperCase(@Right(@UserName;" "))
If the user id is a hierarchical id, the following code returns FLETCHER:
@UpperCase(@Right(@Name([CN]; @UserName); " "))
6. This example returns the name in canonical format as shown below. Given this hierarchical user ID: CN=Mary Tsen/OU=Illustration/OU=Documentation/OU=Development/OU=R&D/O=WorkSavers/C=US. To return the name in abbreviated format (omitting the CN, OU, O, and C identifiers), use @V3UserName.
@UserName

@Name([CN];@UserName)
 
S

sanch

Блин, вроде все правильно делаю.
Dim session As New NotesSession
Dim user As String
user = session.UserName
К примеру CN=Stew Malone/OU=Editorial/O=Acme то я должен получить "Stew Malone" но я все павно получаю "CN=Stew Malone/OU=Editorial/O=Acme"
как быть?
 
M

morpheus

Из справки Lotus (стоит читать)


CommonUserName
1. In this button script, the variable user gets assigned the current user's common name. Because the script runs on the workstation, the user's common name belongs to the person using Notes at the time. For example, if user Stew Malone/Editorial/Acme clicks the button, the CommonUserName property returns "Stew Malone."

Код:
Sub Click(Source As Button)
Dim session As New NotesSession
Dim user As String
user = session.CommonUserName
End Sub
 
S

sanch

Из справки Lotus (стоит читать)
CommonUserName
Код:
Sub Click(Source As Button)
Dim session As New NotesSession
Dim user As String
user = session.CommonUserName
End Sub
Я читал.Все равно выводится "необрезанное имя".Поставлю вопрос иначе. необходимо из письма вытащить имя отправителя в норамальном формате на LotusScript.
 
M

morpheus

Взято из справки Lotus


Set nam = session.CreateName( "qwerty" )

Вместо "qwerty" вставить то имя (строковое) CN которого необходимо узнать,

например session.UserName сойдёт как для примера и понимания

Код:
Dim session As New NotesSession
Dim nam As NotesName
Dim msg As String
REM Create a NotesName from user name
Set nam = session.CreateName( "qwerty" )
REM Display common, abbreviated, and canonical formats
msg = nam.Common & Chr(13)
msg = msg & nam.Abbreviated & Chr(13)
msg = msg & nam.Canonical
Messagebox msg,, "User name"
 
E

Elena Nefedova

Я читал.Все равно выводится "необрезанное имя".Поставлю вопрос иначе. необходимо из письма вытащить имя отправителя в норамальном формате на LotusScript.
Надо использовать класс NotesName
Код:
Set notesName = New NotesName( name$)
string$ = notesName.Common
 
Мы в соцсетях:

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