Sending formatted Lotus Notes rich text email from Excel VBA

后端 未结 3 1438
無奈伤痛
無奈伤痛 2020-11-27 06:54

I have little Lotus Script or Notes/Domino knowledge but I have a procedure, copied from somewhere a long time ago, that allows me to email through Notes from VBA. I normal

相关标签:
3条回答
  • 2020-11-27 07:17

    To change who it's from, create a generic Notes ID (eg Auto Send/YourCompany) and save the agent with that ID.

    0 讨论(0)
  • 2020-11-27 07:31

    The short answer is Yes. The long answer is painful. There aren't any great classes exposed to manipulate rich text items in Notes. However a few that you can research are the NotesRichTextStyle, NotesRichTextParagraphStyle, and NotesRichTextTable to name a few. These classes help you define some rich text elements and add them programmatically to your rich text field.

    Another approach, since you're sending email, is to use the NotesMIMEEntity classes and build the email using HTML (way way easier). Here's some sample code:

    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   
    

    Essentially you'll need to turn the ConvertMIME setting off in the NotesSession. Then create a new document, set the mail properties, etc. That part is already in your VBA code. Next, create the MIMEEntity and a stream to hold your HTML text. Finally call the SetContentFromText method on your MIMEEntity object. Then send your email. Note the last call is to turn the ConvertMIME feature back on for the NotesSession.

    I'm not sure if this will all work via COM, but it does work well in LotusScript agents in Notes.

    I hope this helps!

    0 讨论(0)
  • 2020-11-27 07:31

    I like it just the way it is. However, I had to change dbString = "mail\" & Application.UserName & ".nsf" to dbString = "mail\" & Application.CurrentUser & ".nsf"

    First comment: I wish I didn't have to have Lotus Notes open at the time of sending.

    Second comment: I wish I could change who the e-mail is from (ie, if I'm sending a report to 50 people, I want it to be from a generic address, rather than my work address)

    0 讨论(0)
提交回复
热议问题