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

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

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

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

Достучатся к почтовой базе.

  • Автор темы Guest
  • Дата начала
Статус
Закрыто для дальнейших ответов.
G

Guest

Всем привет!
Нужно получить тело письма. Если я правильно понимаю - это поле называется Body. Но вот проблема, не знаю как выбрать документы по форме Memo. Прошу меня поправить, если не точно указал форму и поле. В стандартной почтовой базе столько форм и представлений, голова кругом идет.
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
215
как вариант DbSearch с формулой @LowerCase(Form) =* {memo}
 
A

alik86

Так вроде в представление ($All) все доки имеются.
P.S. Письмо может быть и по форме Bookmark, Reply и т.п.
 
G

Guest

Всем спасибо, оказалось что база только и использует форму memo. Теперь осталось распарсить текст, может у кого есть наработки по парсингу текста. Когда получаю значение через doc.GetItemValue("Body")(0), в переменную заношу значение типа:
System PrivatDoc - Intranet:
System PrivatDoc - Internet:
Документ "Касается определения исполнителя работ по демонтажу судопогрузочной машины (на №10334532517871)" (Intranet, Internet) - карточка 660323524248.
Новый документ 66023523244248 на исполнении.

Надо отлавливать число (номер карточки) и что после него стоит.
 
A

alik86

Body - это Rich Text поле. С ним работают конструкции типа:
Код:
Dim RTitem As NotesRichTextItem
Set RTitem = Doc.GetFirstItem("Body")
RTitem.EmbeddedObjects				  'атачи
RTitem.GetFormattedText( False, 0))  'текст
но не Вoc.GetItemValue("Body")(0)
 
G

Guest

Body - это Rich Text поле. С ним работают конструкции типа:
Код:
Dim RTitem As NotesRichTextItem
Set RTitem = Doc.GetFirstItem("Body")
RTitem.EmbeddedObjects				  'атачи
RTitem.GetFormattedText( False, 0))  'текст
но не Вoc.GetItemValue("Body")(0)

С помощью какой команды можно найти позицию искомого стрингового элемента. Находить искомый элемент, к примеру "103", в поле я научился с помощью команды FindFirstString
Код:
	Set rtnav = body.CreateNavigator
Set rtrange = body.CreateRange
searchString$ = "103"
If rtnav.FindFirstString(searchString$, RT_FIND_CASEINSENSITIVE) Then
End If
А как прочитать некоторое кол. элементов после первой найденной позиции?
 
A

amigolinx

если имеется в виду необходимость вычленить вот этот кусок "10334532517871" из Body, то можно сделать так (если текст всегда в одном и том же формате, как указано. если же нет, то нужны дополнительные проверки на возможный "мусор", который может попасть по обычной неаккуратности при составлении документа):
Код:
Dim RTitem As NotesRichTextItem
Set RTitem = Doc.GetFirstItem("Body")
Dim txt As String
txt = RTitem.GetUnformattedText
txt = StrRightBack(txt, {№}) ' обрезали текст слева по символ № включительно
txt = StrLeft(txt, {)}) ' а теперь отрезали лишнее еще и справа от скобки
 
G

Guest

если имеется в виду необходимость вычленить вот этот кусок "10334532517871" из Body, то можно сделать так (если текст всегда в одном и том же формате, как указано. если же нет, то нужны дополнительные проверки на возможный "мусор", который может попасть по обычной неаккуратности при составлении документа):
Код:
Dim RTitem As NotesRichTextItem
Set RTitem = Doc.GetFirstItem("Body")
Dim txt As String
txt = RTitem.GetUnformattedText
txt = StrRightBack(txt, {№}) ' обрезали текст слева по символ № включительно
txt = StrLeft(txt, {)}) ' а теперь отрезали лишнее еще и справа от скобки

Thanks, очень помогло :)
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

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