VBA Tipp: Notes

Aus DBWiki
Wechseln zu: Navigation, Suche

Aufgabenstellung

Ich möchte gerne E-Mails mit Lotus Notes aus Access versenden.

Lösung

Die folgende Funktion gibt eine einfache Möglichkeit vor, wie man ohne großen Aufwand Mails mit Notes versendet.

Public Function sendNotesMail(Subject As String, _
  Recipient As String, Bodytext As String, SaveIt As Boolean)
 
'Mit Atachment
'Public Function sendNotesMail(Subject As String, Attachment As String, _
'  Recipient As String, Bodytext As String, SaveIt As Boolean)
 
'  Benötigt Lotus Notes Client 4.5.x oder besser
 
Dim Maildb As Object 'Die Maildatenbank
Dim UserName As String 'Aktueller Notes User Name
Dim MailDbName As String 'Name der Datenbank des Benutzers
Dim MailDoc As Object 'Die eigentliche E-Mail
Dim AttachME As Object 'Das Anlage Richtextfile Object
Dim Session As Object 'Die Notes Session
Dim EmbedObj As Object 'Das Embedded object (Attachment)
 
' Fehlerbehandlung
On Error GoTo err_SendNotesMail
 
' Notes Saisson starten
  Set Session = CreateObject("Notes.NotesSession")
  UserName = Session.UserName
  MailDbName = Left$(UserName, 1) & _
    Right$(UserName, (Len(UserName) - InStr(1, UserName, " "))) & ".nsf"
 
' Öffnen der Notes-Datenbank
  Set Maildb = Session.GETDATABASE("", MailDbName)
 
' Ist die Datenbank geöffnet ?
  If Not Maildb.ISOPEN Then Maildb.OPENMAIL
 
' Neue Mail einrichten
  Set MailDoc = Maildb.CREATEDOCUMENT
  MailDoc.Form = "Memo"       ' Art des Formulars
  MailDoc.SendTo = Recipient  ' Empfänger
  MailDoc.Subject = Subject   ' Betreff
  MailDoc.Body = Bodytext     ' Eigentliche Nachricht
' Wenn Nachricht nach Senden gespeichert werden soll:
  MailDoc.SAVEMESSAGEONSEND = SaveIt
 
' Einstellen des Embedded Object und der Anlage
'  If Attachment <> "" And Dir(Attachment) <> "" Then
'    Set AttachME = MailDoc.CREATERICHTEXTITEM("Attachment")
'    Set EmbedObj = AttachME.EMBEDOBJECT(1454, "", Attachment, "Attachment")
'    ' MailDoc.CREATERICHTEXTITEM ("Attachment")
'  End If
 
' Dokument senden
  MailDoc.Send 0, recipient
 
' aufräumen
  Set Maildb = Nothing
  Set MailDoc = Nothing
  Set AttachME = Nothing
  Set Session = Nothing
  Set EmbedObj = Nothing
 
  sendNotesMail = True
 
end_SendNotesMail:
  Exit Function
 
err_SendNotesMail:
  Select Case Err.Number
  Case 429:
     MsgBox "Fehlerbeschreibung: " & vbCrLf & Err.Description & vbCrLf & _
       "Mögliche Ursache:" & vbCrLf & "Lotus Notes nicht installiert", _
       vbCritical, "Fehler beim initialisieren von LotusNotes"
  Case Else:
     MsgBox Err.Description & Err.Number, vbCritical, "Fehler Lotus Notes Mail"
  End Select
  Resume end_SendNotesMail
 
End Function


Wiki hinweis.png

Achtung: Man kann auch das Passwort mitgeben, allerdings wird dies aus Sicherheitsgründen nicht empfohlen. Es sollte weiterhin der normale Notes Passwort-Dialog genutzt werden.

Das einfache Senden der Nachricht funktioniert einwandfrei. Da allerdings in vielen Unternehmen mit "Roaming" und/oder einer BATCH-Datei gearbeitet wird, sollte man auf das Öffnen von Notes verzichten, da es dann Probleme beim Öffnen geben kann. Dies könnte Verwirrung beim Benutzer auslösen... Heißt im Klartext...Notes sollte zum Versenden geöffnet sein!

Weiterhin ist hier das "Atachment" aufgeführt. Nur wenn dies auch gefüllt ist, läuft die Funktion fehlerfrei (ggf. Teile heraus löschen)