Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1860to1864
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

E-Mail senden in IBM Notes mit VBA

E-Mail senden in IBM Notes mit VBA
17.12.2021 09:18:17
Erik
Liebe Gemeinde,
ich habe mit untenstehender Funktion die Möglichkeit, E-Mails aus Excel heraus über IBM Notes zu versenden. Grundsätzlich klappt das sehr gut. Allerdings musste ich den Code vor Kurzem überarbeiten, da der Nachrichtentext immer unter der Notes-eigenen Signatur eingefügt wurde. Dieses Problem konnte ich lösen, aber leider sind nun zwei Probleme aufgetaucht, die ich vorher nicht hatte.
Ich bin für jeden Tipp und jede Hilfe dankbar!
Der Code
Bitte seht mir die Mißachtung der Namenskonventionen nach, ich bin Autodidakt und formuliere meinen Code noch sehr menschenartig.

'#  E-Mail mit VBA in IBM NOTES senden
'|  Quellen:
'| http://www.online-excel.de/excel/singsel_vba.php?f=42
'| http://www.office-loesung.de/ftopic232699_0_0_asc.php
'| http://www-12.lotus.com/ldd/doc/lotusscript/lotusscript.nsf/1efb1287fc7c27388525642e0074f2b6/1f82ab14864680138525642e007687cb?OpenDocument
'|  Benötigt Lotus Notes Client 4.5.x oder besser
'|  Parameterinfos:
'|      Empfaenger, Kopie, Blindkopie = Eine Zeichenkette oder ein Array, dass gültige E-Mail-Adressen enthält
'|      Betreff = Eine Zeichenkette, die den Titel/das Thema der Nachricht enthält
'|      Nachtricht = Eine Zeichenkette, die den Text der E-Mail enthält
'|      Anhang =    Eine Zeichenkette, die einen oder mehrere gültige Dateipfade für die Anhänge enthält;
'|                  mehrere Dateipfade müssen mit einem Semikolon ";" getrennt werden
'|      Speichern = Gibt an, ob die E-Mail in IBM Notes im Ordner "Gesendet" gespeichert soll; optional
'|      Sofort_senden = Gibt an, ob die E-Mail in IBM Notes vor dem Senden angezeigt oder sofort gesendet werden soll
'|      Dateiname = Gibt eine alternative Maildatei an; .*.nsf; relevant, wenn man Zugang zu mehreren Maildateien besitz
'|                  bspw. persönlich Dienst-E-Mail und Filial-E-Mail etc.
'|      Die obligatorischen Parameter Betreff, Kopie, Blindkopie, Nachricht und Anhang können auch mit einem leeren STRING
'|      übergeben werden.
Public Function E_Mail_senden( _
Empfaenger As Variant, _
Kopie As Variant, _
Blindkopie As Variant, _
Betreff As String, _
Nachricht As String, _
Anhang As String, _
Optional Speichern As Boolean = True, _
Optional Sofort_senden As Boolean = False, _
Optional Dateiname As String _
) As Boolean
Dim LotusNotes As Object
Dim Maildatenbank As Object 'Die Maildatenbank
Dim MailServer As String 'Der Mailserver
Dim MailFile As String ' Die Maildatei
Dim EMail As Object 'Die E-Mail in IBM Notes
Dim Anhangobjekt As Object 'Das Anlage Richtextfile Object
Dim Session As Object 'Die Notes Session
Dim Eingebettetes_Objekt As Object 'Anhang
Dim Anhaenge() As String 'Liste mehrere Anhänge
Dim Index As Long
Dim Dateipfad As String
Dim Fehlertext As String
Dim Notesfeld As Object 'Datenfeld in IBM Notes
Dim Aktuelle_Email As Object 'Aktuelle E-Mail
'Lotus Notes Session starten
Set Session = CreateObject("Notes.NotesSession")
'Lotus-Notes-Datenbank oeffnen
MailServer = Session.GetEnvironmentString("MailServer", True)
If VBA.Len(Dateiname) = 0 Then
MailFile = Session.GetEnvironmentString("MailFile", True)
Else
MailFile = "mail/" & Dateiname
End If
Set Maildatenbank = Session.GETDATABASE(MailServer, MailFile)
'Pruefe, ob die Maildatenbank geoeffnet ist
'Provoziert im Fall, dass sie geschlossen ist, einen Fehler
If Not Maildatenbank.IsOpen Then Maildatenbank.OPENMAIL
'Neue Mail einrichten
Set EMail = Maildatenbank.CREATEDOCUMENT
'Felder füllen
Set Notesfeld = EMail.APPENDITEMVALUE("Subject", Betreff)
Set Notesfeld = EMail.APPENDITEMVALUE("SendTo", Empfaenger)
Set Notesfeld = EMail.APPENDITEMVALUE("BlindCopyTo", Blindkopie)
Set Notesfeld = EMail.APPENDITEMVALUE("CopyTo", Kopie)
'Arbeitsumgebung laden
Set LotusNotes = CreateObject("Notes.NotesUIWorkspace")
'E-Mail erstellen
LotusNotes.EDITDOCUMENT True, EMail
'Aktuell erstellte E-Mail auswählen
Set Aktuelle_Email = LotusNotes.CurrentDocument
'Nachricht einfügen
Aktuelle_Email.GotoField "Body"
Aktuelle_Email.InsertText Nachricht
'Anlagen hinzufügen
Anhaenge = VBA.Split(Anhang, ";")
For Index = LBound(Anhaenge) To UBound(Anhaenge)
Dateipfad = Anhaenge(Index)
If Dateipfad  "" And VBA.Dir(Dateipfad)  "" Then
Set Anhangobjekt = EMail.CREATERICHTEXTITEM("Attachment" & Index)
Set Eingebettetes_Objekt = _
Anhangobjekt.EMBEDOBJECT(1454, "", Dateipfad, "Attachment" & Index)
End If
Next
'Nachricht nach dem Senden speichern (oder nicht)
EMail.SAVEMESSAGEONSEND = Speichern
If Speichern = True Then EMail.Save True, True, True
'Prüfe, ob die E-Mail sofort gesenden werden soll
If Sofort_senden = True Then
'E-Mail senden
Aktuelle_Email.Send False, Empfaenger
'E-Mail schließen
Aktuelle_Email.Close
End If
'WAHR als Rueckgabewert der Funktion bestimmen
E_Mail_senden = True
End Function
Die Probleme
Es funktioniert die Funktion "Speichern" nicht mehr, d.h. IBM Notes speichert die E-Mail auch im Ordner "Gesendet", wenn ich das gar nicht will (Parameter Speichern = false).
Das zweite Problem hat mit meinem dienstlichen Kontext zu tun: Ich habe zwei E-Mail-Zugänge. Eine persönliche Dienst-E-Mail-Adresse mmustermann@firma.de (Maildatei: mmustermann.nsf) und eine Filial-E-Mail-Adresse meinefiliale@firma.de (Maildatei: meinefiliale.nsf). Beide Maildateien liegen, so weit ich das ermitteln konnte, im gleichen Basisverzeichnis. Wenn ich den o.g. Code mit meiner persönlichen E-Mail nutze, dann funktioniert der Parameter Sofort_senden = true ohne Probleme, wenn ich meine Filial-E-Mail-Adresse verwende, fragt mich IBM Notes, ob ich die Änderungen speichern will, obwohl ich die E-Mail gern ohne Nachfrage abschicken möchte.
Ich hoffe, ich konnte mein Anliegen klar und verständlich darstellen. Ich bedanke mich für eure Aufmerksamkeit,
herzliche Grüße aus Dresden
Erik

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: E-Mail senden in IBM Notes mit VBA
22.12.2021 17:16:51
ChrisL
Hi Erik
Lange musstest du auf ein Lebenszeichen aus dem Forum warten :)
(mir ist erst spät eingefallen, dass ich noch einen alten IBM Notes Client rumliegen habe)
Also bei mir wird die Mail ebenfalls immer in den Sent-Ordner gelegt. Ich glaube, dies hängt mit der Vorgaben zusammen.
Benutzervorgaben, Mail, Senden und Empfangen, Kopien meiner gesendeten Nachrichten speichern: Immer
Leider hat der Admin die Einstellung gesperrt, so dass ich nicht testen kann, ob diese Einstellung die individuelle Mail-Option übersteuert. Ich könnte es mir aber gut vorstellen.
Ich vermute auch das zweite Thema hängt irgendwie mit den Vorgaben zusammen. Welche genau habe ich nicht weiter recherchiert.
Folgenden Beitrag habe ich versucht zu verstehen:
https://stackoverflow.com/questions/47525478/save-copy-of-mail-that-i-send-lotus-notes-using-script
Ganz blicke ich allerdings nicht durch. Dennoch folgende Aussage:
You create your mail in the mail.box of the server, not in your personal mailfile. Therefor you don't see them. None of the preferences has any effect on mails that are created programmatically.
Im Gegensatz dazu gehe ich davon aus, dass du in den jeweiligen Mailboxen arbeitest und nicht auf dem Server. Somit wäre der Umkehrschluss, dass bei dir die Präferenzen relevant sind.
Zugegeben, meine Antwort ist wenig konkret oder getestet. Vielleicht ist es ja trotzdem ein Schubser in die richtige Richtung.
Ansonsten würde ich empfehlen mal in einem IBM-Notes Forum nachzufragen. Als Excel- oder VBA-Crack kann man leider nichts zum Thema beitragen und die Spielwiese wird dem Grossteil der hier Anwesenden fehlen.
cu
Chris
Anzeige

133 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige