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

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

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

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

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

Мыш

Lotus Team
12.02.2008
1 220
29
BIT
68
Всем здрасьте. Допиливаю шаблон почтовой базы с целью добавления дисклеймера в исх. письма (штатный способ не подходит). Соббсно, возникла, вроде, простая задача - понять, есть ли уже дисклеймер в теле письма, дабы не добавлять его повторно.
Проблемы начались с пересылаемым письмом. Пробовал получить на 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 597
310
BIT
180
Мыш
Кажется через сервер можно, в админке.
Policies. Создаем политику, закладка Mail -> Message Disclaimers
Указываем текст, настраиваем.

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

Мыш

Lotus Team
12.02.2008
1 220
29
BIT
68
Darkhan, пробовал, увы, не работает (как если бы поля "Body" не было).
savl, к сожалению, этот способ не подходит (дисклеймер "динамический", варьируется в зависимости от разных параметров).
 

savl

Lotus Team
28.10.2011
2 597
310
BIT
180
Мыш
Грубо, но если вот так?
При вставке прописываем поле : EnableDisclaimer = "1"
При Replay вставляем всегда.
При Forward проверять поле, = 1 - не вставлять.

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

susinmn

А если на 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 220
29
BIT
68
savl, дык при форварде это поле из исходного письма не наследуется. Форвард - вообще вещь в себе, как я понимаю...
ЗЫ. Невнимательно я прочел свою же ссылку - способ с FindString в событии QuerySend, вроде, пашет, буду дальше копать. Но все равно, занятно - на QuerySave добавление дисклеймера с помощью AppendText отрабытыывало всегда. То есть, писать можно, читать нельзя? :)
ЗЗЫ. Спасибо всем откликнувшимся. :)
 

Мыш

Lotus Team
12.02.2008
1 220
29
BIT
68
susinmn, Medevic работает - благодарю! :crash: Млин, совсем забыл про эту тонкость...
 
Мы в соцсетях:

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