我小荷脚本或Notes / Domino的知识,但我有一个过程,从什么地方很久以前复制的,可以让我通过从VBA Notes电子邮件。我通常只用这个内部的通知,其中所述格式化还没有真正重要的。

我现在想用这个来发送电子邮件,外部的客户和企业类型宁愿电子邮件与我们的风格指南(一无衬线字体基本上)遵守。

我正要告诉他们,代码只用纯文本的工作,但后来我发现该例程不会引用某种CREATERICHTEXTITEM对象。这是否意味着我可以应用某种格式的正文文本字符串的已传递到邮件程序?以及维护我们宝贵的品牌价值,这将是非常方便的,以我的电子邮件突出某些段落。

我有一个关于掏净,看看这个代码可以适应,但是是不熟悉的注意事项'对象模型,而事实上,网上Notes资源似乎镜像应用程序自己的迟钝,这意味着我没有”吨得到很远。

代码:

Sub sendEmail(EmailSubject As String, EMailSendTo As String, EMailBody As String, MailServer as String)

    Dim objNotesSession As Object
    Dim objNotesMailFile As Object
    Dim objNotesDocument As Object
    Dim objNotesField As Object
    Dim sendmail As Boolean

    'added for integration into reporting tool
    Dim dbString As String

    dbString = "mail\" & Application.UserName & ".nsf"

On Error GoTo SendMailError
    'Establish Connection to Notes
    Set objNotesSession = CreateObject("Notes.NotesSession")
On Error Resume Next
    'Establish Connection to Mail File
    Set objNotesMailFile = objNotesSession.GETDATABASE(MailServer, dbString)
    'Open Mail
    objNotesMailFile.OPENMAIL
On Error GoTo 0

    'Create New Memo
    Set objNotesDocument = objNotesMailFile.createdocument

    Dim oWorkSpace As Object, oUIdoc As Object
    Set oWorkSpace = CreateObject("Notes.NotesUIWorkspace")
    Set oUIdoc = oWorkSpace.CurrentDocument

    'Create 'Subject Field'
    Set objNotesField = objNotesDocument.APPENDITEMVALUE("Subject", EmailSubject)

    'Create 'Send To' Field
    Set objNotesField = objNotesDocument.APPENDITEMVALUE("SendTo", EMailSendTo)

    'Create 'Copy To' Field
    Set objNotesField = objNotesDocument.APPENDITEMVALUE("CopyTo", EMailCCTo)

    'Create 'Blind Copy To' Field
    Set objNotesField = objNotesDocument.APPENDITEMVALUE("BlindCopyTo", EMailBCCTo)

    'Create 'Body' of memo
    Set objNotesField = objNotesDocument.CREATERICHTEXTITEM("Body")

    With objNotesField
        .APPENDTEXT emailBody
        .ADDNEWLINE 1
    End With

    'Send the e-mail

    Call objNotesDocument.Save(True, False, False)
    objNotesDocument.SaveMessageOnSend = True
    'objNotesDocument.Save
    objNotesDocument.Send (0)

    'Release storage
    Set objNotesSession = Nothing
    Set objNotesMailFile = Nothing
    Set objNotesDocument = Nothing
    Set objNotesField = Nothing

    'Set return code
    sendmail = True

    Exit Sub

SendMailError:
    Dim Msg
    Msg = "Error # " & Str(Err.Number) & " was generated by " _
                & Err.Source & Chr(13) & Err.Description
    MsgBox Msg, , "Error", Err.HelpFile, Err.HelpContext
    sendmail = False
End Sub
有帮助吗?

解决方案

简短的答案是肯定的。长的答案是痛苦的。有没有露出来操纵Notes富文本项目的任何了不起的类。但是,你可以研究的几个是NotesRichTextStyle,NotesRichTextParagraphStyle和NotesRichTextTable仅举几例。这些类帮助您定义一些丰富的文本内容,并以编程方式添加到您的富文本字段。

另一种方法,因为你发送电子邮件,是使用NotesMIMEEntity类和建设使用电子邮件HTML(方式比较容易的方式)。下面是一些示例代码:

Set s = New NotesSession
Dim docMail As NotesDocument
Dim body As NotesMIMEEntity
Dim stream As NotesStream

Set db = s.CurrentDatabase
s.ConvertMIME = False ' Do not convert MIME to rich text

'Create email to be sent
Set docMail = db.CreateDocument

With docMail
        .SendTo = SEND TO ADDRESS
        .From = FROM ADDRESS
        .Principal = FROM ADDRESS
        .ReplyTo = REPLY TO ADDRESS
        .Subject = SUBJECT
        .Form = "Memo"
End With

  Set stream = s.CreateStream
Set body = docMail.CreateMIMEEntity
Call stream.WriteText ("YOUR HTML CODE GOES HERE")

'ENC_IDENTITY_8BIT used because of technote found on notes.net
'http://www-10.lotus.com/ldd/nd6forum.nsf/55c38d716d632d9b8525689b005ba1c0/aeedaf28e47546ad85256f6a000a4b48?OpenDocument
Call body.SetContentFromText (stream, "text/html;charset=iso-8859-1",ENC_IDENTITY_8BIT) 

Call docMail.Send(False)
Set docMail = Nothing
Set body = Nothing
Set stream = Nothing

s.ConvertMIME = True ' Restore conversion   

从本质上讲,你需要打开ConvertMIME在NotesSession掀起。然后创建一个新文档,设置邮件属性等那部分已经在您的VBA代码。接下来,创建MIMEEntity和流来保存你的HTML文本。最后打电话给你MIMEEntity对象的SetContentFromText方法。然后发送电子邮件。注意最后一次通话是把ConvertMIME功能回到了NotesSession。

我不知道这是否会通过COM的所有工作,但它确实在LotusScript代理在Notes工作。

我希望这有助于!

其他提示

要改变它是谁,创建一个通用Notes标识符(如自动发送/ YourCompany)和保存代理与该ID。

我喜欢它只是它的方式。但是,我不得不改变 dbString = "mail\" & Application.UserName & ".nsf"dbString = "mail\" & Application.CurrentUser & ".nsf"

华富首评:我希望我没有让Lotus Notes在发送时打开

第二个意见:我希望我能够改变的电子邮件是谁(即,如果我发送给50人的报告,我希望它是从一个普通的地址,而不是我的工作地址)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top