Решено Как Сформировать Письмо С Html И Вложениями Из Другого Документа

Тема в разделе "Lotus - Программирование", создана пользователем anna, 19 дек 2014.

  1. anna

    anna Lotus team
    Lotus team

    Регистрация:
    3 июн 2014
    Сообщения:
    304
    Симпатии:
    8
    Добрый день!
    Как сформировать в LS письмо, чтобы в теле письма был HTML, а в аттачах - вложения (разные типы файлов могут быть) из других документов базы.
    Сейчас письмо формируется из NotesStream, Call mimeE.SetContentFromText(stream, {text/html;charset="UTF-8"}, ENC_NONE) - и html формируется нормально. При попытке приаттачить файл (разными способами) - файл получает другое имя, расширение .dat. Если пытаться посылать текстовый файл и устанавливать text/plain, то, вроде, нормально, но с экселем такое уже не проходит даже с корректным контент-тайпом. При попытке пересылать заранее сформированный документ с текстом и аттачем просто путем Send - теряется html.
    Буду крайне признательна за совет. Буду крайне признательна за кусок рабочего кода. :email:
     
  2. susinmn

    susinmn Well-Known Member

    Регистрация:
    16 окт 2007
    Сообщения:
    530
    Симпатии:
    8
    Код (Text):
    Dim filenames() As String
    i=-1
    n=1
    Set rtdoc=doc.GetFirstItem("Files")
    If ( rtdoc.Type = RICHTEXT ) Then
    If Not Isempty(rtdoc.EmbeddedObjects) Then
    Set mime = result.CreateChildEntity( )
    Forall object In rtdoc.EmbeddedObjects
    If (object.Type = EMBED_ATTACHMENT ) Then
    filepath =Environ("Temp")+"\"+Cstr(Object.Name)
    Call object.ExtractFile(filepath)

    tmpSource=Object.Source
    i=i+1
    NameSource:
    If i=0 Then
    Redim Preserve filenames(0)
    filenames(0)=Object.Source
    Else
    For j=0 To Ubound(filenames)
    If filenames(j)=tmpSource Then
    tmpSource=Strleft(Object.Source,".")+Cstr(n)+"."+Strright(Object.Source,".")
    n=n+1
    Goto NameSource
    End If
    Next
    Redim Preserve filenames(Ubound(filenames)+1)
    filenames(Ubound(filenames))=tmpSource
    End If

    tmp=Evaluate({@ReplaceSubstring(@URLEncode("UTF-8";"}+Cstr(tmpSource)+{");"%";"=")})
    filename="=?utf-8?Q?"+tmp(0)+"?="

    Set mime = result.CreateChildEntity( )

    Set hdr = mime.CreateHeader("Content-Disposition")
    Call hdr.SetHeaderValAndParams(|attachment; filename="|+filename+|"|)
    Set hdr = mime.createHeader("Content-ID")
    Call hdr.setHeaderVal(filename)
    Set stream = s.CreateStream
    stream.Open filepath, "binary"
    mime.SetContentFromBytes stream, |application/octet-stream; name="|+filename+|"|, ENC_BINARY
    mime.EncodeContent ENC_BASE64
    End If
    End Forall     
    End If
    End If
     
  3. anna

    anna Lotus team
    Lotus team

    Регистрация:
    3 июн 2014
    Сообщения:
    304
    Симпатии:
    8
    Спасибо. Файл приходит, все норм. Остается странность - приходит не один файл, а два, дополнительно пустой ATTцифры.txt
     
  4. anna

    anna Lotus team
    Lotus team

    Регистрация:
    3 июн 2014
    Сообщения:
    304
    Симпатии:
    8
    Про ATT файлы написано следующее:

    The ATT00001.txt file is a file generated as an attachment by Microsoft Outlook or Microsoft Exchange Server. The name ATT00001 is a generic file name and you’ll often see these in .htm format, .dat, and other extensions when there is some sort of compatibility issue between the sender and recipients Microsoft email program settings.
    It is often the result of a MIME file being sent and because of a compatibility issue when the redundant / additional txt file gets generated and attached. These Microsoft mail systems use Transport Neutral Encapsulation Format (TNEF) to pack and send this information, which is a proprietary format that sometimes leads to problems.
    Was this added as a garbage attachment and has no content in it?
    This file type is typically going to either be the plain text of the email or blank. If its blank, you will need to check with the sender, as the attachment didn’t send properly and was replaced with this garbage/blank file.
    Good luck.
     
  5. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    вы хотите перевода? :email:
    возможно этот файл генерит чунга-чанга (Эксчендж)
     
  6. anna

    anna Lotus team
    Lotus team

    Регистрация:
    3 июн 2014
    Сообщения:
    304
    Симпатии:
    8
    Смысл ясен текста как раз ясен. Неясно, что нужно сделать, чтобы не присоединялся этот лишний аттач.
    Включили 8-bit MIME в настройках почтовика, все равно не помогает.
    И еще возник вопрос, как, вдобавок к телу письма (которое содержит сформированный текст уведомления в HTML), вложить всякие не приаттаченные, а просто вставленные в Body принскрины и всякое содержимое?

    Добавлено:
    Смысл ясен текста как раз ясен. Неясно, что нужно сделать, чтобы не присоединялся этот лишний аттач.
    Включили 8-bit MIME в настройках почтовика, все равно не помогает.
    И еще возник вопрос, как, вдобавок к телу письма (которое содержит сформированный текст уведомления в HTML), вложить всякие не приаттаченные, а просто вставленные в Body принскрины и всякое содержимое?
     
  7. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    если со всех внешних источников, в чангу приходят подобным образом - то её и надо настаивать
    а еще в домине, в настройках рутера, есть пункт - типа отсылать еще и текст
    в хтмл есть картинки как base64, data URI называется, НО есть ограничения у старых версий УЁ (IE), а именно он используется как рендерер в аутглюке (старом)
     
  8. anna

    anna Lotus team
    Lotus team

    Регистрация:
    3 июн 2014
    Сообщения:
    304
    Симпатии:
    8
    Если тело письма формируем как HTML, а к нему туда же нужно дописать содержимое из Body, которое хранится как HTML mime (как вариант - как RTF), то это как? Догадываюсь, что делается CreateChildEntity, а далее?
     
  9. anna

    anna Lotus team
    Lotus team

    Регистрация:
    3 июн 2014
    Сообщения:
    304
    Симпатии:
    8
    Итак, проблема решена. Все сделано совсем по-другому - проще и надежнее. В процессе было рассмотрено несколько способо реализации - один вышеприведенный через работу с MimeEntities, другой через дерганье поля Body через веб, а третий - работающий - через конвертацию в MIME
    В посылаемый документ вставляется rtf поле другого документа через CopyItem, сопроводительная информация (та, которая в HTML, но типа текст) прогоняется через оформление PassThruHTML = True. Затем документ, который посылаем, кодируется в hTML
    Call maildoc.ConvertToMIME( CONVERT_RT_TO_HTML )
    и все чудесно посылается со скриншотами, аттачами, оформлением текста, вставленными таблицами итп.
    всем спасибо <_<
     
Загрузка...

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