Guest_Юрий
Для начала тебе необходимо ознакомится со следующими статьями в хэлпе дизайнера и администратора:
- Creating a database that receives mailings
- Reserved fields that control mailing options
- Setting server mail rules
Чтобы заработал агент необходимо выполнить следующее:
1. Создать правило, по которому бы приходящая корреспонденция фильтровалась по определенному адресату:
из приложения администратора: <почтовый сервер Domino> - configuration - server - configurations - router/smtp
- restrictions and controls - rules - new rule
там указываешь:
specify conditions:
sender contains mailforme@km.ru (где mailforme@km.ru - адресат, по которому будет фильтроваться входящая почта, взят мною в качестве примера и отладки)
specify actions:
move to database mailintest.nsf (где mailintest.nsf - бд, куда будет перенаправляться входящая корреспонденция, создана мною в качестве примера в корневой директории почтового сервера Domino)
Сохраняешь и закрываешь конфигурационный документ.
2. Создаешь в директории почтового сервера следующую бд, которая содержит:
1. форму документов, для отображения перенаправленных почтовых сообщений, со следующими полями:
Form = "Memo"
SendTo (text field type)
From (text field type)
Subject (text field type)
Body (rich text field type)
2. представление документов "all" с формулой отбора: SELECT @All
3. агент "MailInDocumentsProccess", обрабатывающий поступившие в бд перенаправленные почтовые сообщения:
runtime: trigger on event after new mail has arrived
Код:
Sub Initialize
Dim session As New NotesSession
Dim db As NotesDatabase
Dim doc_collection As NotesDocumentCollection
Dim note As NotesDocument
Dim rtitem As NotesRichTextItem
Dim message As String
Dim two_words As String
Dim numeric_value As String
Dim five_words As String
Dim three_numeric As String
Set db = session.CurrentDatabase
Set doc_collection = db.UnprocessedDocuments ' новые почтовые сообщения, поступившие в бд с последнего запуска текущего агента
Set note = doc_collection.GetFirstDocument
While Not note Is Nothing
Set rtitem = note.GetFirstItem("Body")
message = rtitem.GetUnformattedText ' текст почтового сообщения как plain text
' получим первые два слова сообщения
two_words = Strleft(message, " ")
For i = 2 To 2
message = Trim(Strright(message, " "))
two_words = two_words + " " + Strleft(message, " ")
Next
message = Trim(Strright(message, " "))
' получим цифровые значения: цифры до слэша и цифры после слэша
numeric_value = Strleft(message, "/")
message = Trim(Strright(message, "/"))
numeric_value = numeric_value + "/" + Strleft(message, " ")
message = Trim(Strright(message, " "))
' получим следующие пять слов
five_words = Strleft(message, " ")
For i = 2 To 5
message = Trim(Strright(message, " "))
five_words = five_words + " " +Strleft(message, " ")
Next
message = Trim(Strright(message, " "))
' получим следующие 3 цифры
three_numeric = Left(message, 3)
' далее полученной информацие пользуемся на свое усмотрение: копируем в новые документы в другие бд (странички для web), рассылаем по почте и т.д.
'......
Set note = doc_collection.GetNextDocument(note)
Wend
End Sub
Агент срабатывает каждый раз, когда на почтовый сервер поступает входящий документ определенного адресата и начинает обрабатывать его, таким образом соблюдается актуальность. В качестве примера агент обработал следующее входящее письмо:
"Приход два 5418209/41261 погрузка завершена точно в срок 542 другой текст...." и получил на выходе следующее:
two_words = "Приход два"
numeric_value = "5418209/41261"
five_words = "погрузка завершена точно в срок"
three_numeric = "542"
__________________________
Программа отлажена и проверена на работоспособность.