• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Проблемы с конвертацией Mime в Richtext

  • Автор темы PavelT100
  • Дата начала
P

PavelT100

И вот такая теперь у меня проблема. Пришло письмо в лотус из OutLook. Оно в MIME формате. Вообще все пользователи с такими работают. Открывают, дописывают туда, ставят комментарии и т.д.
А я решил его открыть программно. Вот пришло только что письмо и я его раз читаю и ничего собственно не делаю:
Код:
	Dim session As New NotesSession		
session.ConvertMIME = true

Dim rtitem As NotesRichTextItem	 
Set rtitem = doc.GetFirstItem("Body")		

doc.Save(True, False )
А эффект плачевен, документ сохранился, но формат текста поля Body письма - шрифт, размер, цвет потерялся. Как его правильно сковертировать чтобы эти параметры сохранились ?
Если GetFirstItem не делать, а просто сохранить документ, то потерь формата не произойдёт.
 
D

Darker

попробуй в начале
session.ConvertMIME = False
потом в конце
session.ConvertMIME = True
 
P

PavelT100

попробуй в начале
session.ConvertMIME = False
потом в конце
session.ConvertMIME = True
Если открывать документ с session.ConvertMIME = False, то поле Body предствляет собой массив из 4 элементов - частей MIME формата. Само собой GetFirstItem уже не работает, так как это не RichTetxt.
Что есть для вас "начало" и "конец" ?
 
W

wowa

вот как у мну работает, куски кода:

Код:
s.ConvertMime = False
.....
...
...

Set stream = s.CreateStream
Set mime = doc.CreateMIMEEntity("Body")
Call mime.SetContentFromText (stream, "text/html;charset=UTF-8", ENC_NONE)

s.ConvertMime = True
 
P

PavelT100

вот как у мну работает, куски кода:

Код:
s.ConvertMime = False
.....
...
...

Set stream = s.CreateStream
Set mime = doc.CreateMIMEEntity("Body")
Call mime.SetContentFromText (stream, "text/html;charset=UTF-8", ENC_NONE)

s.ConvertMime = True
Это замчательные куски, если надо сделать письмо с MIME частями и отправить его.
А у меня чуть другая задача. Мне уже пришло письмо. Мне бы надо его сковертировать в обычные ричтекст, но это плохо получается. Теряеются элементы форматирования - размер шрифта и цвет. Вот как мне этого достичь ? Идея у меня затем простая, мне к этому ричтексту надо будет дописывать комментарии читателей писем.
 

Мыш

Lotus Team
12.02.2008
1 213
29
BIT
43
надо его сковертировать в обычные ричтекст, но это плохо получается. Теряеются элементы форматирования - размер шрифта и цвет.
Я бы сказал - это, в целом, у Лотуса плохо получается :)
Вообще все пользователи с такими работают. Открывают, дописывают туда, ставят комментарии и т.д.
Т.е., у пользователей все нормально - не теряется форматирование? А к ним эти письма в MIME или в Rich Text приходят? Это же еще от настроек в DD зависеть может...
 

ToxaRat

Чёрный маг
Green Team
06.11.2007
3 332
42
BIT
0
Код:
Function ConvertRTDoc(Doc As NotesDocument) As String ' Конверт Mime в РТ
'	ses.ConvertMIME = False
Dim mime As NotesMIMEEntity, v1 As Variant
Set mime = doc.GetMIMEEntity
v1 = ""
If Not(mime Is Nothing) Then
Call mime.DecodeContent
v1 = mime.ContentAsText
End If
If Len(v1)>64000 Then v1 = Left(v1, 64000)
Let Doc.ReplaceItemValue("Body2", v1).Issummary = False
ConvertRTDoc = v1
'	ses.ConvertMIME = True
End Function
 
P

PavelT100

Т.е., у пользователей все нормально - не теряется форматирование? А к ним эти письма в MIME или в Rich Text приходят? Это же еще от настроек в DD зависеть может...
Что такое DD ?
Даже у меня как у пользователя Лотуса, когда я в Лотусе работаю с письмами как обычный пользователь открываю их, редактирую, закрываю всё работает корректно. Письма приходят MIME. А вот потом, после открытия, сохранения и закрытия они становятся у пользователей RcihText и это гораздо более корректный ричтекст, чем тот которй получается у меня если делать это программно
Код:
 Dim rtitem As NotesRichTextItem	 
Set rtitem = doc.GetFirstItem("Body")			
doc.Save(True, False )

Добавлено:
Код:
Function ConvertRTDoc(Doc As NotesDocument) As String ' Конверт Mime в РТ
....
End Function
Спасибо, я попробую. Но чувствую это будет очень большой геморой, если будет несколько MIME частей, если будут приатаченные картинки, приатаченные файлы - замучаешься их выколупывать и пристыковывать заново.
А уж если что-то потеряется, меня в асфальт закатают под общее улюлюкание.
 

Мыш

Lotus Team
12.02.2008
1 213
29
BIT
43
DD=Domino Directory.
Я просто хотел сказать, что конвертация MIME->Rich Text работает достаточно хреново и при конвертации писем самим сервером Domino (если письмо приходит в MIME, а в документе пользователя в DD указано "Prefers Rich Text").
Потеря атрибутов текста, кривые таблицы - все это наблюдаю довольно часто. Поэтому не жду от LS корректной конвертации... :please:
 
P

PavelT100

Поэтому не жду от LS корректной конвертации...
Да, но при редактировании пользователя руками и сохранении документа в ричтексте получается результат лучше чем у меня программно - вот это наводит на мысль, что можно же ещё что-то сделать....
 
T

turumbay

Да, но при редактировании пользователя руками и сохранении документа в ричтексте получается результат лучше чем у меня программно - вот это наводит на мысль, что можно же ещё что-то сделать....
А не смотрели, как выглядит документ в dxl? Может получица прямо в майм запихнуть?
В RT точно можно воткнуть <pardef> с произвольным форматированием, не снося остального форматирования...
 
H

hosm

так в DXL рт-параграфы задаются, попробуйте док-т с рт экспортнуть и всё увидите.
ЗЫ. т.е. их стили.
 
T

turumbay

А что такое <pardef> ?
Designer 7 Help сказал(а):
pardef element: Represents explicit style information for a paragraph. Use this element with the <par> element, which represents a paragraph
Выгрузите документ, содержащий ричтекст, в dxl и откройте текстовым редактором. После долгого вглядывания обычно становица понятно, что нужно добавить чтобы получить желаемое.
 
Мы в соцсетях:

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