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

Тема в разделе "Lotus - Программирование", создана пользователем GveinBlade, 16 ноя 2012.

  1. GveinBlade

    GveinBlade Гость

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

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    Думаю капать надо в сторону MIME
     
  3. GveinBlade

    GveinBlade Гость

    я не использую 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">
    Код (LotusScript):
    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
     
  4. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    ты не используешь, а сервер не конвертит письмо в MIME?
    Да и правильно скрипт делает. Изображение в Body - это не атач
     
  5. GveinBlade

    GveinBlade Гость

    Думаешь стоит порыть серверные настройки?
     
  6. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    для отправки письма на улицу - по любому посылка должна быть в MIME.
     
  7. GveinBlade

    GveinBlade Гость

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

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.052
    Симпатии:
    146
    Попросить пользователя сохранять скрин в файл)
    А если немного попроще, то можно попробовать всё RT-поле из документа перенести в письмо.
    Код (LotusScript):
    Call rtitem.AppendRTItem(currtitem)
    Попробуй, хуже уже не будет. Предварительно закоменти в коде момент добавления аттачей.

    Help по NotesRichTextItem:
    UPD: Таблицы в 5-ке рисовались "на ура", как мне говорил один разработчик.
     
  9. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    GveinBlade
    Вставленная в рт картинка вложением не является. Хотите копировать картинку из одного рт-поля в другое — DXL Вам в руки.
     
  10. GveinBlade

    GveinBlade Гость

    Спасибо попробую отпишусь!
     
  11. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    если в поле Body документа curdoc нет ничего лишнего - сделай проще
    Код (Text):
    rtitem.AppendRTItem( currtitem )
    Или
    Код (Text):
    currtitem.CopyItemToDocument( doc )
     
  12. GveinBlade

    GveinBlade Гость

    у меня там и скрин может быть и аттачи, я думал может во время перебора аттаче если не аттач то присвоить какой-нить переменной это значение и атачнуть ее rtitem?
     
  13. VladSh

    VladSh начинающий
    Lotus team

    Регистрация:
    11 дек 2009
    Сообщения:
    1.251
    Симпатии:
    2
    Видите, насколько слаба позиция?

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

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

    VladSh начинающий
    Lotus team

    Регистрация:
    11 дек 2009
    Сообщения:
    1.251
    Симпатии:
    2
  15. GveinBlade

    GveinBlade Гость

    Спасибо за помощь. Замечания учту. А посоветоваться с коллегами как лучше сделать ту или иную вещь всегда полезно.
     
  16. VladSh

    VladSh начинающий
    Lotus team

    Регистрация:
    11 дек 2009
    Сообщения:
    1.251
    Симпатии:
    2
    Нашли тему, почитали, что-то неясно - задали вопрос в той же теме, - это правильно, ничего тут стыдного нет. И никто не поругает))
     
Загрузка...
Похожие Темы - Взять файл по
  1. San40S
    Ответов:
    5
    Просмотров:
    3.071
  2. iivvnn
    Ответов:
    4
    Просмотров:
    1.811
  3. student55
    Ответов:
    0
    Просмотров:
    1.911
  4. ToxaRat
    Ответов:
    3
    Просмотров:
    2.293
  5. Dragon108
    Ответов:
    5
    Просмотров:
    3.111

Поделиться этой страницей