Общие вопросы > Разработка приложений
Перемещение писем в папки
K85:
У меня есть переделанная почтовая база, в ней когда приходит новая почта агентом переносится письмо в одну из папок. А появилась необходимость сделать форму, в которой будут задаваться эти названия папок и при нажатии Ок запускался тот агент, а в агенте данные брались из этих полей. ???
На данный момент названия папок создаются в самом агенте.
Может кто-то делал?! просто что-то не могу добиться данного результата :'(
K85:
Вот код самого агенка, который проверяет почту и отправляет письма по папкам:
--- Код: --- Set db = s.CurrentDatabase
Set doc=s.DocumentContext
vSubj$ = doc.Subject(0)
vAdr$ = doc.From(0)
Flag% = 0
'Разбираем поле Subject, оно должно быть в формате sXXXX-RR
'Где XXXX - номер, а RR - номер реестра
'Если поле Subject соответсвует указанной гипотезе то помещает сообщение в папку RR\XXXX
'Если папка отсуствует - создаем ее
If (Strcompare(FormName$, "Memo", 1) = 0) Then
Subject$ = Trim$(doc.Subject(0))
'Достаем Номер
S1$ = Strleft(Subject$, "-")
S1$ = Trim$(Right(S1$, Len(S1$)-1))
'Достаем КОДИФИКАТОР-2
S2$ = Strright(Subject$, "-")
S2$ = Trim$(Left(S2$, Len(S2$)))
Select Case S1$
Case "0001"
S1$ = "0001 – папка1"
Case "0002"
S1$ = "0002 – папка2"
……………………….
Case Else
S1$="Неизвестный"
' отправка сообщения
………..
Flag% = 1
End Select
Select Case S2$
Case "00"
S2$ = "00 – Осн.папка1"
Case "01"
S2$ = "01 – Осн.папка2"
………………………..
Case Else
S2$ = "Неизвестный"
If Flag% = 0 Then
' отправка сообщения
………
End If
Flag% = 1
End Select
'Проверяем целевую папку для сообщения, если нет то создаем, после чего перемещаем сообщение
Folder$ = S2$ + "\" + S1$
Set view = db.GetView( Folder$ )
If ( view Is Nothing ) Then
Call db.EnableFolder(Folder$)
Call doc.PutInFolder(Folder$)
Call doc.RemoveFromFolder("($Inbox)")
If Flag% = 0 Then
vSS$ = GetFilesInfo(doc)
vSD$ = Date$ + " " + Time$ + Uchr$ (10)
' отправка сообщения
…………….
End If
Else
Call doc.PutInFolder(Folder$)
Call doc.RemoveFromFolder("($Inbox)")
If Flag% = 0 Then
vSS$ = GetFilesInfo(doc)
vSD$ = Date$ + " " + Time$ + Uchr$ (10)
………………
End If
End If
End If
--- Конец кода ---
проблема в том, что агент не создает новые папки пока не укажешь название в самом агенте, поэтому и хотелось бы отдельную форму, в которой и заполнялись бы эти названия новых папок
ViV:
Т.е. db.EnableFolder(Folder$) не создает папку? а в каком случае создает?
K85:
создает, когда в
Select Case S1$
Case "0001"
S1$ = "0001 – папка1"
указываешь название новой папки, тогда письмо прийдет в новую папку
т.е. в коде Case "0001" ..... Case "nnnn" надо постоянно добавлять
ViV:
Итак, пользователю приходит письмо, в теме которого указано в какую папку его класть. В формате <название папки>-<название подпапки>. Вам нужно, чтобы письма в автоматическом режиме раскладовались по нужным папкам. Правильно?
Если да, то можно без select case:
S1$ = S1$ + "папка" + StrRightBack(S1$, "0")
аналогично для S2$, ну и дополнительно обрабатывать S1$ без "0" и т.д.
Навигация
Перейти к полной версии