Конвертирование вложенной картинки в приаттаченный файл

Wanderstep

Lotus Team
23.03.2006
493
66
BIT
26
Подскажите, пожалуйста, в каком направлении нужно идти, чтобы добиться следующей задачи: конвертирование картинки в файл, приаттаченный к письму.
Расшифровываю, есть 2 варианта, какой из них проще/лучше реализовать:
1. Отправляется письмо с вложенным объектом - картинка. При получении такого письма необходимо его модифицировать так, чтобы вложенный объект был извлечен и вставлен в текст письма как вложение графического файла.
2. В почте создать бланк письма, в котором будет кнопка, по нажатию на которую в текст письма вложится сгенерированный файл картинки, скопировав какой-нибудь скриншот из буфера обмена.

В любом случае необходимо переделать графич.объект в графич.файл.
На мой взгляд, проще реализовать первый вариант. Может у кого есть примеры готовых скриптов или кто подскажет хотя бы методы, которые необходимо применять для реализации данной задачи?
 
A

allex

Если я правильно понял задачу

А сохранять объек RT-поля на диск и затем приатачивать его в документ
 

Wanderstep

Lotus Team
23.03.2006
493
66
BIT
26
Если не трудно, подскажи, каким методом сохранять объект на диск?
 
M

morpheus

Для: Wanderer
Вам повсей видимсоти нужно работать с классом NotesEmbeddedObject class
 
A

allex

Вот небольшой примерчик кнопки на форме
которая переводит атачмент в одном поле в embeded object в другое поле

Код:
Sub Click(Source As Button)

Dim workspace As New NotesUIWorkspace	
Dim doc As NotesUIDocument 
Dim rtitemA As NotesRichTextItem 
Dim info As NotesRichTextItem 
Set doc = workspace.CurrentDocument 
If Not doc.Document.HasEmbedded Then Exit Sub 
Set rtitemA = doc.Document.GetFirstItem("info") 


REM Сохраняем аттачи на диск 
Forall att In rtitemA.EmbeddedObjects 
If att.Type = EMBED_ATTACHMENT Then 
filepath$ = "C:\temp\" & att.Source 
Call att.ExtractFile(filepath$) 
Call doc.GotoField("embed") 
'Call doc.Import("JPEG Image",filepath$) 
Call doc.Import("Microsoft Word",filepath$)
'Call doc.CreateObject("Quarterly Reports", "",filepath$)
Kill filepath$ 
End If 
End Forall 
Call doc.FieldClear("Info")
Call rtitemA.Update

End Sub
 

Wanderstep

Lotus Team
23.03.2006
493
66
BIT
26
хмм.. что-то в этом есть... чуть попозже раберусь с этим кодом. спасибо за наводку.
Если у кого что есть еще более конкретное под мою задачу, буду только рад.
 
M

morpheus

Для: Wanderer
К сожалению нима под картинку, а только похожее на allex .. но ждём Ваших результатов link removed :)
 
A

allex

Этот код впринципе является простым перекладыванием из одного поля в другое.
Что касаемо картинок, то нужно сделать так.
Просто у меня в базе не только картинки (есть и doc и xls)
Поэтому хочу универсальности
Код:
REM Сохраняем аттачи на диск 
Forall att In rtitemA.EmbeddedObjects 
If att.Type = EMBED_ATTACHMENT Then 
filepath$ = "C:\temp\" & att.Source 
Call att.ExtractFile(filepath$) 
Call doc.GotoField("embed") 
Call doc.Import("JPEG Image",filepath$) 
Kill filepath$ 
End If 
End Forall 
Call doc.FieldClear("Info")
Call rtitemA.Update

Для: Wanderer
К сожалению нима под картинку, а только похожее на allex .. но ждём Ваших результатов link removed :)

Тогда кто будет это туда постить (модератор или автор)
 
M

morpheus

Для: allex
[OffTop]
Постить может любой, модератор лиш проверяет на правильность и публикует тему, авторство остаеться у того кто СОЗДАЛ тему
[/OffTop]
 

Wanderstep

Lotus Team
23.03.2006
493
66
BIT
26
Вставил скрипт в код кнопки в записке письма с аттачментами.
Ошибка: "Object variable not set"
Судя по дебаггеру ошибка вылетает на строке
Set rtitemA = doc.Document.GetFirstItem("info")

В связи с этим у меня следующий вопрос, а разве параметр функции GetFirstItem - info в кавычках распознается именно как объект info As NotesRichTextItem? Мне кажется, что параметром станет просто текстовое значение - info. Или я что-то не понимаю?
 
M

morpheus

Для: Wanderer
ПО текстовому значению "info" он ищет поле с именем info. Так что парамерт распознаеться как строка а возвращает оно rtItem
 
A

allex

Для: Wanderer
ПО текстовому значению "info" он ищет поле с именем info. Так что парамерт распознаеться как строка а возвращает оно rtItem

Поле Info - поле с атачментом
Поле Embed - поле куда выкладывается объект
 

Wanderstep

Lotus Team
23.03.2006
493
66
BIT
26
С полем Embed догадался сам, заменил его на Body. А вот с Info стормозил. :)

Зачем тогда строка, объявляющая переменную info?
Dim info As NotesRichTextItem
 

Wanderstep

Lotus Team
23.03.2006
493
66
BIT
26
А за подсказку спасибо, теперь всё заработало.
Переделаю под себя код, навесю агент на почтовый ящик, чтобы входящие письма обрабатывал автоматом, а код выложу в здешнюю Codebase
 

Wanderstep

Lotus Team
23.03.2006
493
66
BIT
26
А не так всё просто, как казалось на первый взгляд. Метод EmbedObject не видит в текст документа картинки (вставленные через импорт, а не вложением файла).
Нашел инфу, как обнаружить наличие картинки в документе, но решение данной задачи лежит в применении DXL, что для меня весьма проблематично.
Других вариантов нет что ли?
 
F

Fossil Code

...
1. Отправляется письмо с вложенным объектом - картинка. При получении такого письма необходимо его модифицировать так, чтобы вложенный объект был извлечен и вставлен в текст письма как вложение графического файла.
2. В почте создать бланк письма, в котором будет кнопка, по нажатию на которую в текст письма вложится сгенерированный файл картинки, скопировав какой-нибудь скриншот из буфера обмена.
...

Что-то чувствую себя озадаченным такой постановкой вопроса... Разве все сказанное не является частью стандартного функционала лотусовой почты? Разве раутер не осуществляет преобразование МИМЕ/РТФ? Разве нет в почтовом клиенте Лотуса флага "показывать МИМЕ вложения инлайн"? Чем Вас это не устраивает? Поясните, пожалуйста, если я совсем не так понял вопрос!
 

Wanderstep

Lotus Team
23.03.2006
493
66
BIT
26
Постановка задачи такова: что необходимо, чтобы на ящик приходили письма только с аттачами. Есть сторонняя система, которая читает этот ящик и формирует на основе нового входящего письма запрос и вкладывает туда вложенные файлы. Вставленные картинки же сторонняя система не понимает.
 
G

GROMILA

Что-то чувствую себя озадаченным такой постановкой вопроса... Разве все сказанное не является частью стандартного функционала лотусовой почты? Разве раутер не осуществляет преобразование МИМЕ/РТФ? Разве нет в почтовом клиенте Лотуса флага "показывать МИМЕ вложения инлайн"? Чем Вас это не устраивает? Поясните, пожалуйста, если я совсем не так понял вопрос!

У меня есть схожая задача.
Подстажите плиз как в почтовом клиент найти галочку "показывать МИМЕ вложения инлайн"
В параметрах что-то не нашел, лотус 6.5
 
F

Fossil Code

Для Gromila

В R.7 это здесь:

With this turned on, images you receive within the text of a MIME message appear as attachments.
1. From the menu, choose File - Preferences - User Preferences.
Macintosh OS X users: Notes - Preferences - User Preferences.
2. Under Additional Options, select "Show in-line MIME images as attachments."
3. Click OK.
See Also
Basic preferences
Preserving text styles in messages sent over or received from the Internet
 
Мы в соцсетях:

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