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

  • Автор темы Автор темы Мыш
  • Дата начала Дата начала

Мыш

Lotus Team
12.02.2008
1 224
30
BIT
158
Всем здрасьте. Допиливаю шаблон почтовой базы с целью добавления дисклеймера в исх. письма (штатный способ не подходит). Соббсно, возникла, вроде, простая задача - понять, есть ли уже дисклеймер в теле письма, дабы не добавлять его повторно.
Проблемы начались с пересылаемым письмом. Пробовал получить на 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 крайне не хочется (ИМХО, слишком уж сильное вмешательство с стандартный шаблон). Возможно, есть другие способы? Заранее благодарен за помощь.
 
Мыш
Кажется через сервер можно, в админке.
Policies. Создаем политику, закладка Mail -> Message Disclaimers
Указываем текст, настраиваем.

Важно назначить политику пользователям.
Наши сказали, что если делать через конфигуратор (??) то все равно будет работать и браться из политики, но вставляться криво.
 
Darkhan, пробовал, увы, не работает (как если бы поля "Body" не было).
savl, к сожалению, этот способ не подходит (дисклеймер "динамический", варьируется в зависимости от разных параметров).
 
Мыш
Грубо, но если вот так?
При вставке прописываем поле : EnableDisclaimer = "1"
При Replay вставляем всегда.
При Forward проверять поле, = 1 - не вставлять.

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

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