|
E-Mail via Lotus Notes versenden Mit folgendem Modul kann man E-Mails aus Access via Lotus Notes versenden. Dank Wolfgang Schecht können nun auch mehrere Empfänger verarbeitet werden. Die E-Mail Adressen der Empfänger können durch Semikoln getrennt angegeben werden. Eine weitere Neuerung ist, daß über einen Optionalen Parameter angegeben werden kann, ob die E-Mail sofort versendet werden oder als Entwurf gespeichert werden soll. |
||
|
Sub SendNotesMail(MailTo As String, MailText As String, MailAnhang As String, _ MailAbsender As String, MailBetreff As String, _ Optional MailSenden=True As Boolean) ' ' Versenden einer E-Mail via Lotus Notes. ' ' IN: MailTo E-Mail Adresse des Empfängers ' MailText Text der Nachricht ' MailAnhang Dateianhang (Dateiname mit Pfad) ' MailAbsender Name des Absenders (wird an den Text angeängt) ' MailBetreff Betreffzeile der E-Mail ' MailSenden True wenn Nachricht versendet werden soll, ' False wenn Nachricht als Entwurf gespeichert werden soll ' Dim rtitem As Object Dim EmbeddedObject As Object Dim SessionNotes As Object, NotesDB As Object, NotesDoc As Object Dim EmpfListe() As String Dim EmpfCnt As Integer Dim Pos1 As Long ' ' wenn die Betreffzeile leer ist, dann wird eine erzeugt ' If Trim$(MailBetreff) = "" Then MailBetreff = "Mail vom " & Date & " " & Time End If ' ' Eigene Fehlerbehandlung ' On Error Goto Err_Mail_Click ' ' An die laufende Lotus Notes Session anhängen ' Set SessionNotes = CreateObject("Notes.NOTESSESSION") ' ' Notes Datenbank-Objekt erstellen und initialisieren ' Set NotesDB = SessionNotes.GetDatabase("", "") NotesDB.OPENMAIL If NotesDB.ISOPEN = False Then MsgBox "Bitte melden Sie sich zunächst vollständig in Notes an!", vbInformation + vbOKOnly Exit Sub End If ' ' Empfängerliste erstellen ' EmpfCnt = 0 Pos1 = InStr(MailTo, ";") While Pos1 > 0 ReDim Preserv EmpfListe(EmpfCnt) EmpfListe(EmpfCnt) = Left(MailTo,Pos1 - 1) MailTo = Right(MailTo,Len(MailTo) - Pos1) Pos1 = InStr(MailTo, ";") EmpfCnt = EmpfCnt + 1 Wend ReDim Preserv EmpfListe(EmpfCnt) EmpfListe(EmpfCnt) = MailTo ' ' Neues Notes-Dokument anlegen (Mail) ' Set NotesDoc = NotesDB.CreateDocument With NotesDoc .Form = "Memo" .Subject = MailBetreff .sendto = EmpfListe '.copyto = ' Kopie an '.blindcopyto= Blindkopie an .body = MailText & vbCrLf & MailAbsender '.DefaultMailSaveOption = 0 '.MailSaveOption = 0 .DeliveryReport = "B" .Importance = "2" '.logo = "Scania" .SAVEMESSAGEONSEND = True ' bei True wird ein Exemplar in Notes in Gesendet gestellt .ReturnReceipt = "1" .Sign = "1" '.encrypt ="0" '.Principal = session.UserName '.viewicon ="74" '.from = session.UserName '.SaveOptions = 0 '.SecureMail = "" '.SenderTag = "F" '''''''''''''' Dateianhang''''''''''''''''' If Trim$(MailAnhang) <> "" Then Const embed_ATT = 1454 Set rtitem = .CreateRichTextItem(MailAnhang) Set EmbeddedObject = rtitem.EmbedObject(embed_ATT, "", MailAnhang, MailAnhang) End If '''''''''''''''''''''''''''''''''''''''''' If MailSend Then .Send False Else .Save End If End With Set SessionNotes = Nothing Set NotesDB = Nothing Set NotesDoc = Nothing Set rtitem = Nothing Set EmbeddedObject = Nothing Exit_Mail_Click: Exit Sub Err_Mail_Click: MsgBox Err.Description Resume Exit_Mail_Click End Sub |
||
|
Die Prozedur könnte z.B. in einem Formular in der Ereignisprozedur Beim Klick eines Senden-Buttons aufgerufen werden. Hier ist allerdings darauf zu achten, daß als Parameter der Prozedur nicht die Steuerelemente des Formulars sondern lokale Variablen angegeben werden. In meinen Tests kam es, bei Verwendung der Steuerelemente, zu Laufzeitfehlern. Die Ereignisprozedur könnte dann so aussehen: |
||
Private Sub PbSenden_Click()
Dim Empf As String
Dim MText As String
Dim Anlage As String
Dim MBetreff As String
Dim MAbsender As String
'
' Als Absender den angemeldeten User verwenden
'
MAbsender = Environ("User")
'
' Prüfen, ob Empfänger angegeben sind
'
If IsNull(Me.dfEmpfaenger) Then
MsgBox "Bitte geben Sie einen Empfänger an"
End If
Empf = Me.dfEmpfaenger
'
' Wenn keine Nachricht angegeben ist, dann wird
' hier ein Standardtext gesetzt.
'
If IsNull(Me.dfMailtext) Then
MText = "Automatische E-Mail"
Else
MText = Me.dfMailtext
End If
'
' Anhang aus dem Formular übernehmen
'
If IsNull(Me.dfAnhang) Then
Anlage = ""
Else
Anlage = Me.dfAnhang
End If
'
' Wenn kein Betreff angegeben ist, dann
' wird hier ein Standardtext gesetzt.
'
If IsNull(Me.dfBetreff) Then
MBetreff = "Automatische Mail vom " & Date$
Else
MBetreff = Me.dfBetreff
End If
'
' Mail abschicken
'
SendNotesMail Empf, MText, Anlage, MAbsender, MBetreff
'
' Mail als Entwurf speichern
'
SendNotesMail Empf, MText, Anlage, MAbsender, MBetreff, False
End Sub
|