Взять файл по вложенной в RTF картинке

  • Автор темы GveinBlade
  • Дата начала
G

GveinBlade

#1
Привет всем. Может кому вопрос покажется глупым. но все же задам. Итак есть функция для отправки письма формируем письмо приатачиваем файлы которые были в документе и вот какая заковыка обычные файлики приатачиваются нормально, но если пользователь в поле поместил скрин то его благополучно пропускает скрипт прикладывая остальные файлики и отправляя письмо. Есть у кого какие мысли по этому поводу?
VladSh специально для тебя - поиском искал. не нашел.
 
G

GveinBlade

#3
Думаю капать надо в сторону MIME
я не использую MIME при отправке

Добавлено: Вот собственно
<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">функция</div></div><div class="sp-body"><div class="sp-content">
Код:
Function send(AddressLN As String)
Dim s As New NotesSession
Dim w As New NotesUIWorkspace
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim rtitem As NotesRichTextItem
Dim object As NotesEmbeddedObject
Dim Person As NotesName
Dim filename As Variant
Dim curdoc As NotesDocument
Dim uidoc As NotesUIDocument
Dim currtitem As NotesRichTextItem
Dim FileBody As NotesRichTextItem
Dim obj_arr() As String
Dim i As Integer
Dim file_path As String
Dim adressitem As NotesItem
Dim comment As NotesItem

Set s= New NotesSession
Set w= New NotesUIWorkspace
Set db=s.CurrentDatabase
Set uidoc = w.CurrentDocument
Set curdoc = uidoc.Document
Set doc = New NotesDocument(db)
Set currtitem = curdoc.GetFirstItem("Body")
doc.form="Memo"
doc.SendTo=AddressLN
doc.Subject = "Новая заявка на регистрации" & {: "} &" LN-"& curdoc.GetItemValue ("RegNum")(0) & {"}
Set rtitem = New NotesRichTextItem(doc,"Body")
Call rtitem.AddNewline(1)
Call rtitem.AppendText("Пожалуйста зарегистрируйте эту заявку: ")
Call rtitem.AppendDocLink(curdoc,curdoc.GetItemValue("Category")(0))
Call rtitem.AppendText("<--- Нажмите для открытия документа")
Call rtitem.AddNewline(2)
Call rtitem.AppendText("Номер заявки: "+curdoc.RegNum(0))
If curdoc.Category(0)<>"" Then
Call rtitem.AddNewline(1)
Call rtitem.AppendText ("Предмет заявки: "+curdoc.GetItemValue("Category")(0))
End If
If curdoc.PrinterModel(0)<>"" Then
Call rtitem.AddNewline(1)
Call rtitem.AppendText ("Модель принтера или картриджа: "+curdoc.PrinterModel(0))
End If
If curdoc.NameRes(0)<>"" Then
Call rtitem.AddNewline(1)
Call rtitem.AppendText("Наименование ресурса: "+curdoc.NameRes(0))
End If
If curdoc.VidAccess(0)<>"" Then
Call rtitem.AddNewline(1)
Call rtitem.AppendText("Вид доступа: "+curdoc.VidAccess(0))
End If
If curdoc.DateOn(0)<>"" Then
Call rtitem.AddNewline(1)
Call rtitem.AppendText("Срок для доступа: "+"с "+Cstr(curdoc.DateOn(0))+" до "+Cstr(curdoc.DateOff(0)))
End If
If curdoc.IPResource(0)<>"" Then
Call rtitem.AddNewline(1)
Call rtitem.AppendText("Имя ПК или IP адрес: "+curdoc.IPResource(0))
End If
Set comment=curdoc.GetFirstItem("OriginatorComment")
If Not comment Is Nothing Then
If comment.Text<>"" Then
Call rtitem.addnewline(1)
Call rtitem.AppendText("Комментарий автора: " + Comment.Text)
End If
End If		
If curdoc.VidDo(0)<>"" Then
Call rtitem.AddNewline(1)
Call rtitem.AppendText("Комментарий сотрудника: "+curdoc.VidDo(0))
End If
Call rtitem.addnewline(1)
Call rtitem.AppendText("Ответственный исполнитель: "+curdoc.OriginatorAlt(0))
Call rtitem.AddNewline(3)
Call rtitem.AppendText("С уважением,")
Call rtitem.AddNewline(1)
Call rtitem.AppendText("Система автоматического оповещения.")
Call rtitem.AddNewline(2)
If Isempty(currtitem.EmbeddedObjects) Then
Else
i=0
Redim obj_arr(i)
If currtitem.Type = RICHTEXT Then
Forall obj In currtitem.Embeddedobjects
If obj.type = EMBED_ATTACHMENT Then
path=Environ("TEMP")
Call obj.extractFile(path+"\"+obj.Name)
i=i+1
Redim Preserve obj_arr(i)
obj_arr(i)=obj.Name
End If
End Forall
End If
If Ubound(obj_arr)>0 Then
For i=1 To Ubound(obj_arr)
file_path=path+"\"+obj_arr(i)
Set object=rtitem.Embedobject(EMBED_ATTACHMENT,"",file_path)
Kill (file_path)
Next
End If
End If
doc.send(False)
End Function
 

NickProstoNick

Статус как статус :)
Lotus team
22.08.2008
1 809
21
#4
ты не используешь, а сервер не конвертит письмо в MIME?
Да и правильно скрипт делает. Изображение в Body - это не атач
 

NickProstoNick

Статус как статус :)
Lotus team
22.08.2008
1 809
21
#6
для отправки письма на улицу - по любому посылка должна быть в MIME.
 
G

GveinBlade

#7
для отправки письма на улицу - по любому посылка должна быть в MIME.
Слушай я что-то торможу. Сейчас письма с атачами реализованные таким образом ходят нормально. Затык только в скринах. Я могу конечно отправку через MIME переписать полностью, но нет ли другого выхода из данного положения?
 

savl

Lotus team
28.10.2011
2 136
105
#8
Попросить пользователя сохранять скрин в файл)
А если немного попроще, то можно попробовать всё RT-поле из документа перенести в письмо.
Код:
Call rtitem.AppendRTItem(currtitem)
Попробуй, хуже уже не будет. Предварительно закоменти в коде момент добавления аттачей.

Help по NotesRichTextItem:
AppendRTItem method
Inserts the contents of one rich text item in another.
UPD: Таблицы в 5-ке рисовались "на ура", как мне говорил один разработчик.
 

nvyush

Lotus team
22.04.2009
2 317
0
#9
GveinBlade
Вставленная в рт картинка вложением не является. Хотите копировать картинку из одного рт-поля в другое — DXL Вам в руки.
 

NickProstoNick

Статус как статус :)
Lotus team
22.08.2008
1 809
21
#11
если в поле Body документа curdoc нет ничего лишнего - сделай проще
Код:
rtitem.AppendRTItem( currtitem )
Или
Код:
currtitem.CopyItemToDocument( doc )
 
G

GveinBlade

#12
если в поле Body документа curdoc нет ничего лишнего - сделай проще
Код:
rtitem.AppendRTItem( currtitem )
Или
Код:
currtitem.CopyItemToDocument( doc )
у меня там и скрин может быть и аттачи, я думал может во время перебора аттаче если не аттач то присвоить какой-нить переменной это значение и атачнуть ее rtitem?
 

VladSh

начинающий
Lotus team
11.12.2009
1 276
6
#13
Видите, насколько слаба позиция?

VladSh специально для тебя - поиском искал. не нашел.
GveinBlade, специально для вас - плохо искали, инфы по отправке писем во внешний мир, и по тому, как получить картинку, вложенную в RTF, здесь навалом. А то, что ребята отвечали, это лояльность за неумение пользоваться поиском нужной и, по большей части, RTFM-ной информации.

Добавлено: в "Заголовок тему" и в "Описание темы" не надо писать одно и то же, люди здесь понятливые.
А код, если он более трети страницы, принято оборачивать в спойлер и указывать подсветку (касаемо #3).
 

VladSh

начинающий
Lotus team
11.12.2009
1 276
6
#16
А посоветоваться с коллегами как лучше сделать ту или иную вещь всегда полезно.
Нашли тему, почитали, что-то неясно - задали вопрос в той же теме, - это правильно, ничего тут стыдного нет. И никто не поругает))