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

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

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

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

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

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

  • Автор темы anna
  • Дата начала
A

anna

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

susinmn

Добрый день!
Как сформировать в LS письмо, чтобы в теле письма был HTML, а в аттачах - вложения (разные типы файлов могут быть) из других документов базы.
Сейчас письмо формируется из NotesStream, Call mimeE.SetContentFromText(stream, {text/html;charset="UTF-8"}, ENC_NONE) - и html формируется нормально. При попытке приаттачить файл (разными способами) - файл получает другое имя, расширение .dat. Если пытаться посылать текстовый файл и устанавливать text/plain, то, вроде, нормально, но с экселем такое уже не проходит даже с корректным контент-тайпом. При попытке пересылать заранее сформированный документ с текстом и аттачем просто путем Send - теряется html.
Буду крайне признательна за совет. Буду крайне признательна за кусок рабочего кода. :email:
Код:
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
 
A

anna

Спасибо. Файл приходит, все норм. Остается странность - приходит не один файл, а два, дополнительно пустой ATTцифры.txt
 
A

anna

Про 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.
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 927
608
BIT
150
вы хотите перевода? :email:
возможно этот файл генерит чунга-чанга (Эксчендж)
 
A

anna

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

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

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 927
608
BIT
150
Смысл ясен текста как раз ясен. Неясно, что нужно сделать, чтобы не присоединялся этот лишний аттач.
если со всех внешних источников, в чангу приходят подобным образом - то её и надо настаивать
а еще в домине, в настройках рутера, есть пункт - типа отсылать еще и текст
И еще возник вопрос, как, вдобавок к телу письма (которое содержит сформированный текст уведомления в HTML), вложить всякие не приаттаченные, а просто вставленные в Body принскрины и всякое содержимое?
в хтмл есть картинки как base64, data URI называется, НО есть ограничения у , а именно он используется как рендерер в аутглюке (старом)
 
A

anna

Если тело письма формируем как HTML, а к нему туда же нужно дописать содержимое из Body, которое хранится как HTML mime (как вариант - как RTF), то это как? Догадываюсь, что делается CreateChildEntity, а далее?
 
A

anna

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

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