Почта Lotus

sanch

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

Elena Nefedova

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

sanch

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

Ты же все правильно написал.
В чем вопрос/проблема или тебе просто скрипт нужен?
Если чесно, да, нужен скрипт.Поделитесь если есть )
 
N
#5
Не думаю, что 100-400 папок в почтовой бд будет тоже удобно. Попробуй категоризовать колонку "Who" в папке Inbox - тогда все письма от определенного человека будут отображаться в одной категории, от другого человека - в другой. Например, у меня так сделано, очень удобно.
 

sanch

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

Elena Nefedova

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

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

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

sanch

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

sanch

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

sanch

Well-known member
17.07.2006
215
0
#10
И еще )) .Как в LotusScript в строку передать двойные кавычки?
 

morpheus

скриптописец
07.08.2006
3 915
1
#11
Как указать в скрипте что надо проверять только папку 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

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

sanch

Well-known member
17.07.2006
215
0
#14
И еще вопросик! как работать со строками? к примеру есть строка "cn=vasya/o=rabota" как сделать чтоб осталось только "vasya"?
 

morpheus

скриптописец
07.08.2006
3 915
1
#15
Из справка 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)
 

sanch

Well-known member
17.07.2006
215
0
#16
Блин, вроде все правильно делаю.
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"
как быть?
 

morpheus

скриптописец
07.08.2006
3 915
1
#17
Из справки 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
 

sanch

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

morpheus

скриптописец
07.08.2006
3 915
1
#19
Взято из справки 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

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