Отправить письмо в Html виде Lotus

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

  1. Гость

    Пишу агента - контроль исполнения
    который должен отвечать на входящую почту.
    подскажите как отправить письмо в html виде???
    ответ пишу так

    Код (Text):
    Sub Initialize
    Dim session As New NotesSession
    Dim db As NotesDatabase
    Dim tema As String
    Set session = New NotesSession
    Set db = session.CurrentDatabase
    Set docs = db.UnprocessedDocuments
    Count = docs.Count
    If docs.Count > 0 Then
    For n = 1 To docs.Count
    Set memo = docs.GetNthDocument(n)
    If Not( memo.SentByAgent ) Then
    Set reply = memo.CreateReplyMessage( False )
    tema = memo.Subject( 0 )
    tema = tema + "Hfpyfz ntrcnjde["
    reply.Subject = "RE:" & memo.Subject( 0 )
    reply.Body = "КАК сюда вставить HTML код"
    Call reply.Send( False )
    End If
    Call session.UpdateProcessedDoc(memo)
    Next
    End If 
    End Sub
     
  2. Alexander (Criz)

    Alexander (Criz) Гость

    См. в хелпе NotesMIMEEntity
     
  3. Гость

    Агент получился следующий

    Код (Text):
    Sub Initialize
    Dim session As New NotesSession
    Dim db As NotesDatabase
    Dim reply As NotesDocument
    Dim body As NotesMimeEntity
    Dim stream As NotesStream
    Dim s1 As String
    Dim s2 As String
    session.ConvertMime = False ' We do want Notes to convert MIME to Rich Text

    Set session = New NotesSession
    Set db = session.CurrentDatabase
    Set docs = db.UnprocessedDocuments

    Count = docs.Count

    If docs.Count > 0 Then
    For n = 1 To docs.Count
    Set memo = docs.GetNthDocument(n)
    If Not( memo.SentByAgent ) Then
    Set reply = memo.CreateReplyMessage( False )       
    reply.Subject = "Re: e-mail bot " & memo.Subject( 0 )
    Call reply.RemoveItem( "Body" )            
    Set body = reply.CreateMIMEEntity("Body")

    Set stream = session.CreateStream

    s1 =Chr$(123)
    s2 =Chr$(125)

    Call stream.WriteText({<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">})
    Call stream.WriteText({<html xmlns="http://www.w3.org/1999/xhtml">})
    Call stream.WriteText({<head>})
    Call stream.WriteText({<title>Отчет запроса - Управление архитектуры и градостроительства.</title>})
    Call stream.WriteText({<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />})
    Call stream.WriteText({</head>})
    'css
    Call stream.WriteText({<style type="text/css">})               
    Call stream.WriteText({*}&Chr$(123)&{margin: 0;padding: 0;}&Chr$(125))
    Call stream.WriteText({body}&Chr$(123)&{background: #e0f3fa;font-family: Arial, Helvetica, sans-serif;font-size: 12px;line-height: 17px;color: #222;}&Chr$(125))
    Call stream.WriteText({#wrap}&Chr$(123)&{margin: 20px auto;width: 700px;}&Chr$(125))               
    Call stream.WriteText({#header}&Chr$(123)&{height: 70px;background: #99FF33;}&Chr$(125))       
    Call stream.WriteText({</style>})

    Call stream.WriteText({<body>})
    Call stream.WriteText({<div id="wrap">})
    Call stream.WriteText({<div id="header">})
    Call stream.WriteText({<h1>Сервис - Контроль исполнения заявки</h1>})
    Call stream.WriteText({<h2>Управление архитектуры и градостроительства мэрии г. Череповца</h2>})
    Call stream.WriteText({</div>})
    Call stream.WriteText({<div id="content">})
    Call stream.WriteText({<div class="right"> })
    Call stream.WriteText({<h2><a href="#">Общие данные запроса</a></h2>})
    Call stream.WriteText({<div class="articles">})
    Call stream.WriteText({<ul>Заявитель:</ul>})
    Call stream.WriteText({<ul>Номер заявки:</ul>})
    Call stream.WriteText({<ul>Дата заявки:</ul>})
    Call stream.WriteText({<ul>Содержание заявки:</ul>})
    Call stream.WriteText({</div>})
    Call stream.WriteText({<h2><a href="#">Ход исполнения заявки</a></h2>})
    Call stream.WriteText({<div class="articles">})
    Call stream.WriteText({<ul>Статус документа:</ul>})
    Call stream.WriteText({<ul>Дата окончания срока:</ul>})      
    Call stream.WriteText({<ul>ФИО начальника отдела:</ul>})
    Call stream.WriteText({<ul>Контактная информация:</ul>})
    Call stream.WriteText({</div>})
    Call stream.WriteText({</div>})
    Call stream.WriteText({</div>})            
    Call stream.WriteText({<div id="footer">})
    Call stream.WriteText({<a href="http://www.cherinfo.ru/">Lomaet text Управление архитектуры и градостроительства мэрии г. Череповца</a>})
    Call stream.WriteText({</div>})
    Call stream.WriteText({</div>})
    Call stream.WriteText({</body>})               
    Call stream.WriteText({</html>})       
    Call body.SetContentFromText _
    (stream, "text/html;", ENC_NONE)
    Call stream.Truncate

    Call reply.Send( False )
    End If
    Call session.UpdateProcessedDoc(memo)
    Next
    End If
    session.ConvertMime = True  ' Reset the value  
    End Sub
    Но теперь проблема ломает русский шрифт и не применяет CSS
     
  4. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Настоятельно рекомендуется (в т.ч. и IBM) вместо конструкций вида

    For n = 1 To docs.Count
    Set memo = docs.GetNthDocument(n)
    ...
    Next

    употр*цензура*ть

    Set memo = docs.GetFirstDocument
    Do Until memo Is Nothing
    ...
    set memo = docs.GetNextDocument(memo)
    Loop

    типа работает быстрее

    P.S. Call stream.WriteText({<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />}) - это правильно?
    Из справки:
    To create a NotesStream object, use the CreateStream method in NotesSession.
    When a stream is created, property values are:
    ...
    * Charset is Unicode.
     
  5. NickProstoNick

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

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    А конвертация сообщений в MIME самим роутером не подходит?

    Что-то я сомневаюсь что получится сохранить все стили
     
  6. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Не типа, а точно ;)
     
  7. NickProstoNick

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

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    Почему быстрее?
     
  8. TIA

    TIA :-)
    Lotus team

    Регистрация:
    15 май 2009
    Сообщения:
    790
    Симпатии:
    0
    НаумовичНиколай
    Попробуйте
    mime.SetContentFromText stream, "text/html; charset=Windows-1251", ENC_NONE

    и неплохо бы добавить

    reply.Closemimeentities True
     
  9. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Потому что методы вида GetNth... реализованы перебором.
    Т.е. каждый раз, когда ты просишь в цикле взять i-тый документ из коллекции, указатель бежит по коллекции до i-того документа.
    Получается тяжёлый цикл в цикле.
     
  10. ToxaRat

    ToxaRat Чёрный маг
    Lotus team

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.047
    Симпатии:
    18
    Omh
    не "бежит" а долго в непонятке чешит репу, где-же этот i-тый документ вообще живет ;)
    разница в скорости в 10-100 раз :p
    не позволяйте указателю думать ;)
     
  11. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
  12. Гость

    Убрал строчку 
    и добавил
    и все заработало как надо кроме CSS
    Возможно ли вообще использовать CSS ???
     
Загрузка...

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