Создание расширенного текстового электронного письма в Excel для отправки через Lotus Notes 7 из динамически созданного RTF - PullRequest
0 голосов
/ 26 августа 2011

Я пытаюсь программно сгенерировать электронную почту в моем клиенте Lotus Notes 7, причем содержимое представляет собой фрагмент кода RTF, который я создаю специально для каждой отправляемой электронной почты, в Excel.

Я могу создать, заполнить и отправить письмо. Но тело выглядит как текст ascii моего кода RTF, а не как отформатированная версия, которую я ожидал.

У меня такое чувство, что моя функция электронной почты (унаследованная от предыдущего разработчика) передает ее в виде простого текста. Как я могу передать его как Rich text?

Соответствующий код электронной почты: (имя почтового ящика зависит от компании, поэтому оно было изменено) Также обратите внимание, что я хочу использовать RichText как тело, а не вложение.

Public Sub SendNotesMail(sSubject, sTo, sCC, sBCC, sAttachment, sMessage, Optional sSaveSent As Boolean = True)

'Set up the objects required for Automation into lotus notes
Dim Maildb                              'The mail database
Dim UserName As String                  'The current users notes name
Dim MailDbName As String                'THe current users notes mail database name
Dim MailDoc                             'The mail document itself
Dim RichTextitem As Object              'The RichText Item
Dim AttachME                            'The sAttachment richtextfile object
Dim Session                             'The notes session
Dim EmbedObj                            'The embedded object (sAttachment)
Dim rAttach() As String
Dim x As Integer

'Start a session to notes
Set Session = CreateObject("Notes.NotesSession")
Session.ConvertMime = False

'Get the sessions username and then calculate the mail file name
'You may or may not need this as for MailDBname with some systems you
'can pass an empty string
UserName = Session.UserName
MailDbName = "XXXXX.nsf"

'Open the mail database in notes
Set Maildb = Session.GETDATABASE("", "XXXXXX.nsf")

' Is Mail file already open?
If Maildb.IsOpen = False Then
    Maildb.OPENMAIL
End If

'Set up the new mail document
Set MailDoc = Maildb.CREATEDOCUMENT
MailDoc.form = "Memo"
MailDoc.sendto = sTo
MailDoc.CopyTo = sCC
MailDoc.BlindCopyTo = sBCC
MailDoc.Subject = sSubject
Set RichTextitem = MailDoc.Createrichtextitem("Body")
Call RichTextitem.appendtext(sMessage)
MailDoc.SaveMessageOnSend = sSaveSent

'Set up the embedded object and Attachment and attach it
If sAttachment <> "" Then
    ParseWords rAttach(), sAttachment, ";"
    For x = 0 To UBound(rAttach) Step 1
        Set AttachME = MailDoc.Createrichtextitem("Attachment")
        Set EmbedObj = AttachME.EmbedObject(1454, "", rAttach(x), "Attachment")
    Next x
End If

'Send the document
MailDoc.SaveMessageOnSend = True
MailDoc.SEND 0, sTo

'Clean Up
Set Maildb = Nothing
Set MailDoc = Nothing
Set AttachME = Nothing
Set Session = Nothing
Set EmbedObj = Nothing

End Sub

Вот часть моего текста в формате RTF. Он ничего не отображает, я просто имею в виду текстовый формат.

{\rtf1\adeflang1025\ansi\ansicpg1252\uc1\adeff31507\deff0\stshfdbch31505\stshfloch31506\stshfhich31506\stshfbi31507\deflang1033\deflangfe1033\themelang1033\themelangfe0\themelangcs0{\fonttbl{\f0\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f1\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Arial;}
{\f34\fbidi \froman\fcharset1\fprq2{\*\panose 02040503050406030204}Cambria Math;}        {\flomajor\f31500\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}
{\fdbmajor\f31501\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fhimajor\f31502\fbidi \froman\fcharset0\fprq2{\*\panose 02040503050406030204}Cambria;}
{\fbimajor\f31503\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\flominor\f31504\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}
{\fdbminor\f31505\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fhiminor\f31506\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri;}
{\fbiminor\f31507\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f39\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\f40\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}
{\f42\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\f43\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\f44\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\f45\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}
{\f46\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\f47\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\f49\fbidi \fswiss\fcharset238\fprq2 Arial CE;}{\f50\fbidi \fswiss\fcharset204\fprq2 Arial Cyr;}
{\f52\fbidi \fswiss\fcharset161\fprq2 Arial Greek;}{\f53\fbidi \fswiss\fcharset162\fprq2 Arial Tur;}{\f54\fbidi \fswiss\fcharset177\fprq2 Arial (Hebrew);}{\f55\fbidi \fswiss\fcharset178\fprq2 Arial (Arabic);}

Ответы [ 2 ]

4 голосов
/ 26 августа 2011

Ваш форматированный в RTF текст не будет работать с форматированным текстом Lotus Notes.Это разные вещи.

Вы можете создавать Rich Text с помощью API Notes.Посмотрите методы, которые начинаются с NotesRichTextXXXX.Заметьте, это не просто, и нет простого способа конвертировать RTF в формат Rich Text Notes.

Существует дополнение, которое поможет вам работать с Rich Text.Я не пробовал, но всегда очень рекомендовал: http://www.geniisoft.com/showcase.nsf/MidasLSX

Используя классы MIME, вы можете отправлять HTML-сообщения через Notes, и это может быть вашим лучшим выбором.

1 голос
/ 26 августа 2011

Вам потребуется использовать собственные методы Lotus Notes для поля richtext и создать содержимое richtext из созданного вами объекта "RichtextItem". Поле sMessage должно быть простым текстом, и если вам потребуется указать форматирование с помощью объекта NotesRichTextStyle.

Сведения об API для R7 найдены здесь и здесь . При написании «стилизованного» richtext вам нужно сделать это встроенным, то есть вы начнете добавлять текст, затем, прежде чем вы захотите сделать его жирным, получите объект notesRichTextStyle, установите свойства для него, затем примените его к объекту richtext, затем напишите текст. Когда вам нужно снова изменить стили, вы повторите этот процесс. Этот пример демонстрирует использование. MIDAS richtext - это проверенный и надежный продукт, позволяющий избежать трудностей при создании richtext, но вам необходимо приобрести лицензию .

.

Для вложения вы можете использовать метод embedObject RichTextItem для вложения файла в тело письма, как вы уже показали в своем примере кода, но я думаю, что вы можете повторно использовать объект richtextitem для поля «body» не используйте поле «attachment». Вы должны иметь возможность отправить электронное письмо через Интернет, и пользователи увидят местоположение вложения в электронном письме и отсоединят его.

Здесь - это справочная документация для встраивания объектов с примерами на случай, если вы еще не знали о его функциональности. (Все ссылки предоставлены для R7.)

...