Письмо как Html + аттачмент (MIME)

Тема в разделе "Lotus - Программирование", создана пользователем Gor, 26 мар 2010.

  1. Gor

    Gor Well-Known Member

    Регистрация:
    7 июн 2005
    Сообщения:
    517
    Симпатии:
    2
    Здравствуйте All!

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

    Надо формировать письмо в бэке агентом на сервере в определённом стиле + к этому письму прикладывать определённый аттач.

    Пошёл путём через MIME.

    Код (Text):
        Dim mime As NotesMIMEEntity
    Dim memo As NotesDocument
    Set memo = mdb.CreateDocument  


    Dim texthtml As NotesStream    
    htmltext = {<body>
    <br>
    <br>
    Всем привет
    <br>
    <br>
    </body>}
    Set texthtml = session.CreateStream
    texthtml.WriteText htmltext
    Set mime = memo.CreateMIMEEntity("Body")
    mime.SetContentFromText texthtml, "text/html; charset=Windows-1251", ENC_NONE


    memo.Closemimeentities True


    memo.Form = "Memo"
    memo.From = "Auto рассылка"    
    memo.SendTo = "получатель@om.com"
    memo.Recipients = "получатель@om.com"


    memo.Subject = "Автоматическая рассылка"

    Call memo.Save(True, True)
    т.е. письмо получается формируется в html, нужным мне, а аттач то сейчас как прикрутить?

    ЧЕрез richtext и embededobjects не получается...
     
  2. amigolinx

    amigolinx Гость

    отнюдь. приписал к коду кусочек, все пришпилилось (создал под атачмент отдельный ричтекститем)
    Код (Text):
    memo.Subject = "Автоматическая рассылка"
    '--->
    Dim rtitem As NotesRichTextItem
    Set rtitem = New NotesRichTextItem(memo, "att")
    Dim object As NotesEmbeddedObject  
    Set object = rtitem.EmbedObject(EMBED_ATTACHMENT, "", "c:\tmp\load\test.gif")
    '--->
    Call memo.Save(True, True)
     
  3. Gor

    Gor Well-Known Member

    Регистрация:
    7 июн 2005
    Сообщения:
    517
    Симпатии:
    2
    to: amigolinx

    Да я уже прикручивал подобный кусочек к коду... Письмо приходит в html нормально, а аттача нет(((

    Ради интереса - застопил роутер, глянул в маилбокс - ПИСЬМО ЛЕЖИТ С аттачем!!!!
    Включаю роутер - приходит письмо с текстом но без аттача.... Мистика... Голову сломал...

    Ещё попробовал убрать кусок кода с Mime и оставить с одной отсылкой аттачмента - Аттачмент прекрасно доходит.

    т.е. одно без другого работает, а одновременно нет...

    А у меня задача то всего в письме пару строк красным цветом подчеркнуть и аттач прицепить....
     
  4. amigolinx

    amigolinx Гость

    мистика еще и в том что я не смог воспроизвести подобный трабл у себя...
    такая мыслишка вот закралась - а если соблюсти все буквально и перед созданием/после создания mime поиграться с session.ConvertMIME = False/True ?
     
  5. Кирилл Шваб

    Кирилл Шваб Well-Known Member

    Регистрация:
    30 июн 2006
    Сообщения:
    145
    Симпатии:
    4
    Gor,

    Если тебе надо отправлять письма в формате MIME (например, на внешние адреса), то для прикрепления файлов надо использовать возможности формата MIME.

    Использовать функции, связаные c форматом Notes Rich Text (NRT), в данном случае недопустимо, т.к. у тебя письмо должно быть или формата NRT (тогда роутер при отправке его во вне автоматически сконвертирует его в MIME) или MIME (тогда роутер отправит его как есть).

    Код полностью описывать долго, вратце можно посмотреть на LDD:
    http://www-10.lotus.com/ldd/bpmpblog.nsf/d...nt&comments

    Также можешь поискать в интернете уже готовые для использования классы для работы с MIME в Лотусе, например:

    Jake Howlett's CodeStore - Updated HTML Email LotusScript Class
    Jake Howlett's CodeStore - Java Class For Sending HTML Emails from Lotus Domino

    P.S.
    На всякий случай, еще не забывай отключать конвертирование MIME в NRT на время создания MIME письма (session.ConvertMime = False)
     
  6. lmike

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

    Регистрация:
    27 авг 2008
    Сообщения:
    6.083
    Симпатии:
    300
    если в нотусах не конвертятся письма в РТ, а остаются маймами - скрепки не будет
     
  7. Gor

    Gor Well-Known Member

    Регистрация:
    7 июн 2005
    Сообщения:
    517
    Симпатии:
    2
    to Кирилл Шваб:

    Спасибо, практически получилось то, что хотел.

    Код (Text):
     '================
    Dim memo As NotesDocument
    Set memo = mdb.CreateDocument  
    Set result = memo.CreateMIMEEntity("Body")
    Dim hdr As NotesMIMEHeader
    Set hdr = result.CreateHeader("Subject")
    Call hdr.SetHeaderValAndParams("SUBJ")
    Set hdr = result.CreateHeader("MIME-Version")
    Call hdr.SetHeaderValAndParams(|1.0|)

    Dim tmp1 As NotesMIMEEntity
    Set tmp1 = result.CreateChildEntity( )
    ' text entity, encoding type ENC_NONE
    Dim stream As NotesStream

    Set stream = session.CreateStream
    stream.WriteText {<body>
    <br>
    Уважаемый коллега,
    <br>
    <br>
    Dear colleague,

    <br>

    </body>}
    tmp1.SetContentFromText stream, "text/html", ENC_NONE

    Set tmp1 = result.CreateChildEntity( )
    Set hdr = tmp1.CreateHeader("Content-Disposition")
    Call hdr.SetHeaderValAndParams(|attachment; filename=|+ filename$)
    Set stream = session.CreateStream
    stream.Open pathName$+ filename$, "binary"
    tmp1.SetContentFromBytes stream, "application/octet-stream", ENC_BINARY
    tmp1.EncodeContent ENC_BASE64
    Call memo.CloseMIMEEntities(True, "Body")

    '===============



    memo.Form = "Memo"
    memo.From = "рассылка" 
    memo.SendTo = "123@rambler.com"
    memo.Recipients = "123@rambler.com"

    Call memo.Save(True, True)
    Текст Письма есть и аттачмент цепляется, НО почему то русский текст - Уважаемый коллега,

    отображается как ????????? ???????,

    С кодировкой что то не то?

    Куда копать??
     
  8. lmike

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

    Регистрация:
    27 авг 2008
    Сообщения:
    6.083
    Симпатии:
    300
  9. Gor

    Gor Well-Known Member

    Регистрация:
    7 июн 2005
    Сообщения:
    517
    Симпатии:
    2
    и правда =) спасибо, работает.
     
Загрузка...

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