• Codeby web-security - Курс "Тестирование Веб-Приложений на проникновение с нуля" от команды codeby. Общая теория, подготовка рабочего окружения, пассивный фазинг и фингерпринт, Активный фаззинг, Уязвимости, Пост-эксплуатация, Инструментальные средства, Social Engeneering и многое другое. Подробнее ...

  • Мобильный клиент нашего форума для Android гаджетов доступен в Google Play Market по этой ссылке. Клиент можно скачать с нашего форума по этой ссылке. Последняя версия МК в нашем телеграм канале вот здесь

Получение Текста Из Richtext В Пересылаемом Письме

Мыш

Lotus team
12.02.2008
1 108
12
#1
Всем здрасьте. Допиливаю шаблон почтовой базы с целью добавления дисклеймера в исх. письма (штатный способ не подходит). Соббсно, возникла, вроде, простая задача - понять, есть ли уже дисклеймер в теле письма, дабы не добавлять его повторно.
Проблемы начались с пересылаемым письмом. Пробовал получить на QuerySave текст так:
Код:
Dim s As String
s = uidoc.FieldGetText("Body")
if Instr(1, s, "<фрагмент подписи>", 5) = 0 Then ...
Выяснил, что не работает - возвращаемое значение содержит только подпись человека, пересылающего письмо, и ничего более. Почитал вот тут, переделал:
Код:
Dim s As String
Call uidoc.GotoField("Body")
Call Source.FindString("<фрагмент подписи>",False,False,False, False, False, False, True, True, True)
s = Source.GetSelectedText()
If s = "" Then...
Результат тот же самый. Шаблон базы 6.5.х, работаю с клиентом 8.5.х. Ессно, сохранять док-т и работать с RichText через backend крайне не хочется (ИМХО, слишком уж сильное вмешательство с стандартный шаблон). Возможно, есть другие способы? Заранее благодарен за помощь.
 

savl

Lotus team
28.10.2011
2 139
105
#3
Мыш
Кажется через сервер можно, в админке.
Policies. Создаем политику, закладка Mail -> Message Disclaimers
Указываем текст, настраиваем.

Важно назначить политику пользователям.
Наши сказали, что если делать через конфигуратор (??) то все равно будет работать и браться из политики, но вставляться криво.
 

Мыш

Lotus team
12.02.2008
1 108
12
#4
Darkhan, пробовал, увы, не работает (как если бы поля "Body" не было).
savl, к сожалению, этот способ не подходит (дисклеймер "динамический", варьируется в зависимости от разных параметров).
 

savl

Lotus team
28.10.2011
2 139
105
#5
Мыш
Грубо, но если вот так?
При вставке прописываем поле : EnableDisclaimer = "1"
При Replay вставляем всегда.
При Forward проверять поле, = 1 - не вставлять.

Разные вариации - разные поля флагов.
RT проверять проблематично всегда, а текстовое поле легко проверить.
 

susinmn

Well-known member
16.10.2007
529
3
#6
А если на QuerySave
Код:
uidoc.FieldSetText("SaveOptions", "0")
uidoc.Refresh(True)
uidoc.FieldSetText("SaveOptions", "1")
Set RT = uidoc.Document.GetFirtItem("Body")
RTText = RT.GetUnformattedText()
if Instr(1, RTText , "<фрагмент подписи>", 5) = 0 Then ...
 

Мыш

Lotus team
12.02.2008
1 108
12
#7
savl, дык при форварде это поле из исходного письма не наследуется. Форвард - вообще вещь в себе, как я понимаю...
ЗЫ. Невнимательно я прочел свою же ссылку - способ с FindString в событии QuerySend, вроде, пашет, буду дальше копать. Но все равно, занятно - на QuerySave добавление дисклеймера с помощью AppendText отрабытыывало всегда. То есть, писать можно, читать нельзя? :)
ЗЗЫ. Спасибо всем откликнувшимся. :)
 

Мыш

Lotus team
12.02.2008
1 108
12
#9
susinmn, Medevic работает - благодарю! :crash: Млин, совсем забыл про эту тонкость...
 
Вверх Снизу