title: Playing with vba sending email through lotus notes
body: <p>I have already seen a lot of posts related to that, both on the web overall or on stackoverflow. However, I didn't see people making too much changes and really playing with this macro.</p>
  
  <p><strong>Ok, it's possible to send emails through lotus notes using VBA, but how can I make these emails cooler? Change font format or color for example? Change the styles, choosing to insert picture as a link or embedding it?</strong></p>
  
  <p>Well, this is what I got so far by searching around and making a few changes:</p>
  
  <pre><code>Sub SendEmail(Subject, Text)
  
  Dim Maildb As Object
  Dim mailDoc As Object
  Dim body As Object
  Dim session As Object
  'Start a session to notes
  Set session = CreateObject("Lotus.NotesSession")
  'This line prompts for password of current ID noted in Notes.INI
  'Call session.Initialize 
  Call session.Initialize("Your Password Here")
  'Open the mail database in notes
  Set Maildb = session.GetDatabase("Mail Server", "mail\    .nsf")
  If Not Maildb.IsOpen = True Then
  Call Maildb.Open
  End If
  'Create the mail document
  Set mailDoc = Maildb.CreateDocument
  Call mailDoc.ReplaceItemValue("Form", "Memo")
  'Set the recipient (you can write the name of a list you saved in your Lotus Notes)
  Call mailDoc.ReplaceItemValue("SendTo", "email1@email.com.br")
  'Set subject
  Call mailDoc.ReplaceItemValue("Subject", Subject)
  'Create and set the Body content
  Set body = mailDoc.CreateRichTextItem("Body")
  Call body.AppendText(Text)
  'Example to create an attachment (optional)
  Call body.AddNewLine(2)
  'Insert an pdf attached
  Call body.EmbedObject(1453, "", "C:\Desktop\Test.pdf")
  Call body.AddNewLine(2) 'add line to separate text
  'Message in the end of the email
  Call body.AppendText("This is an automatic message.")
  'Example to save the message (optional)
  mailDoc.SaveMessageOnSend = True
  'Send the document
  'Gets the mail to appear in the Sent items folder
  Call mailDoc.ReplaceItemValue("PostedDate", Now())
  Call mailDoc.send(False)
  'Clean Up
  Set Maildb = Nothing
  Set mailDoc = Nothing
  Set body = Nothing
  Set session = Nothing
  
  End Sub
  </code></pre>
  
  <p>Btw, I use the Windows Task Scheduler to call a VBS which will then call a macro that will call the macro to send email with a specific subject and text. As I have several macros that generates emails and each one has its subject and text, I thought this would be better.</p>
  
  <p>This is the vbs (this is probably useless and everyone knows here, but I will share anyway):</p>
  
  <pre><code>'Run VBA Using VBS
  Option Explicit
  
  On Error Resume Next
  
  ExcelMacroExample
  
  Sub ExcelMacroExample() 
  
      Dim xlApp 
      Dim xlBook 
  
      Set xlApp = CreateObject("Excel.Application") 
      Set xlBook = xlApp.Workbooks.Open("C:\Desktop\Macros.xlsm") 'Excel filename
      xlApp.Run "SendEmail" 'Excel macro name
      xlApp.Quit 
  
      Set xlBook = Nothing 
      Set xlApp = Nothing 
  
  End Sub 
  </code></pre>