Domino 9 und frühere Versionen > ND9: Administration & Userprobleme
E-Mailversand aus Excel geht mit LN 9 nicht mehr
Peter Klett:
Am besten, Du legst das ganze Script zur Seite und fängst noch einmal von vorne an. Dabei begrenzt Du Dich auf die elementarsten Funktionen. Erst wenn die funktionieren, baust Du weiter. Dein Script ist so lang, dass Du da sicherlich den Überblick verloren hast. Vergiss dabei zuerst die ganzen Daten, die in Excel hinterlegt sind, die berücksichtigst Du erst, wenn Dein Kernproblem, der Versand der Mail, gelöst ist.
Folgende Schritte könnte ich mir dabei vorstellen, wobei jeder weitere Schritt natürlich auf den erfolgreich gelösten vorigen Schritt aufbaut
Schritt 1
Erstellen einer Mail und Versenden an einen im Script hart definierten Empfänger
Schritt 2
Versenden der Mail über das Frontend, damit die Signatur eingebunden wird
Schritt 3
Ändern des Inhaltes der Mail
Schritt 4
Anhängen von Dateien
Bis zu diesem Schritt ist das Script noch sehr übersichtlich, also auch hier im Forum recht leicht zu lesen. Im übrigen solltest Du die Hinweise, die Du hier bekommst, auch berücksichtigen, denn es fördert nicht gerade die Hilfsbereitschaft, wenn ein abgegebener Tipp auch in dem danach geposteten Script nicht umgesetzt wurde, dann entsteht hier nämlich der Eindruck, als würde es Dich nicht interessieren.
Tode:
+1 für Peters ausführungen. Ausserdem: Bitte benutze die Code- Tags für das posten von Code... Das macht den Code wesentlich besser lesbar.
jBubbleBoy:
Verursacht "Call doc.Send(True)" den Notes-Client-Absturz? Wenn Ja, dann fallen mir zwei Möglichkeiten ein, eine Notes-Mail im Frontend zu versenden ohne im Excel ein uiDoc.send aufzurufen. Davon mal abgesehen kann man auch im Backend die Signatur hinzufügen ;) Was nach wie vor meine Lösung wäre, aber OK ...
Von den 2 Möglichkeiten gibt es einen der recht einfach umzusetzen ist:
--- Code: ---AppActivate "IBM Notes"
SendKeys "%1"
--- Ende Code ---
Ggf. musst du die Parameter noch anpassen oder fügst einen weiteren AppActivate-Aufruf zum Zurückspringen hinzu.
Und taste dich heran, wie es dir Peter empfohlen hat, das ist ein guter Tipp.
Benni1988:
entschuldigt bitte, wenn das so rüber kommt, als ob ich eure Ratschläge nicht verwende. Wie gesagt ich bin Anfänger, aber versuche immer alles umzusetzen.
Ich bin ja froh, dass ich Hilfe bekomme.
Ich habe jetzt auch versucht wieder von vorne anzufangen und das ohne Uidocument.
--- Code: ---Option Explicit
Sub lotus()
Dim sText As String, sEmpfang As String, sBetrifft As String
Dim session As Object, db As Object, doc As Object, rtobject As Object
Dim rtitem As Object, sKopie As String
Dim AttachMe As Object, DerAnhang As Object
Dim user As String, server As String
Dim mailfile As String, sBlindKopie As String
Dim vAn As Variant, vCopy As Variant
Dim vBlind As Variant, sAnhang As String
On Error GoTo Fehler
sEmpfang = "test@test.de" ' bei mehreren Email Adressen durch " ; " getrennen
sBetrifft = "Test" ' die Betreffzeile
sText = "funktioniert es? " ' Testtext
sKopie = " " ' bei mehreren Email Adressen durch " ; " getrennen
sBlindKopie = " " ' bei mehreren Email Adressen durch " ; " getrennen
vAn = Split(sEmpfang, " ; ") ' Empfänger Array
sAnhang = "" ' richtiger Pfad Muss natürlich richtig gesetzt werden
If Len(sKopie) > 0 Then vCopy = Split(sKopie, " ; ") 'cc Array
If Len(sBlindKopie) > 0 Then vBlind = Split(sBlindKopie, " ; ") 'bcc Array
Set session = CreateObject("notes.notessession") ' Notes muss gestartet sein
user = session.UserName
server = session.GetEnvironmentString("MailServer", True)
mailfile = session.GetEnvironmentString("MailFile", True)
Set db = session.getdatabase(server, mailfile)
Set doc = db.createdocument()
doc.Form = "Memo"
doc.SendTo = vAn ' an array
If Len(sKopie) > 0 Then doc.copyto = vCopy 'cc Array
If Len(sBlindKopie) > 0 Then doc.blindcopyto = vBlind 'bcc Array
doc.Subject = sBetrifft ' die Betreffzeile
Set rtitem = doc.CREATERICHTEXTITEM("body")
Call rtitem.APPENDTEXT(sText)
doc.SAVEMESSAGEONSEND = True
doc.PostedDate = Now
' *******************************************
If sAnhang <> "" Then
Set AttachMe = doc.CREATERICHTEXTITEM("Attachment")
Set DerAnhang = AttachMe.EMBEDOBJECT(1454, "", sAnhang, "Attachment")
End If
'*******************************
Call doc.Send(False)
Aufraeumen:
On Error Resume Next
Set rtitem = Nothing
Set AttachMe = Nothing
Set DerAnhang = Nothing
Set db = Nothing
Set doc = Nothing
Set session = Nothing
Exit Sub
Fehler:
Resume Aufraeumen
End Sub
--- Ende Code ---
so bekomme ich es halb hin, das heißt e-Mail geht, Anhang kann mit versendet werden, nur keine Signatur. Also habe ich folgendes probiert
--- Code: ---Option Explicit
Sub lotus()
Dim sText As String, sEmpfang As String, sBetrifft As String
Dim session As Object, db As Object, doc As Object, rtobject As Object
Dim rtitem As Object, sKopie As String
Dim AttachMe As Object, DerAnhang As Object
Dim user As String, server As String
Dim mailfile As String, sBlindKopie As String
Dim vAn As Variant, vCopy As Variant
Dim signature As Object
Dim vBlind As Variant, sAnhang As String
On Error GoTo Fehler
sEmpfang = "test1@test.de" ' Einträge durch " ; " getrennt
sBetrifft = "Test" ' die Betreffzeile
sText = "funktioniert es? " ' Testtext
sKopie = " " ' Einträge durch " ; " getrennt
sBlindKopie = " " ' Einträge durch " ; " getrennt
vAn = Split(sEmpfang, " ; ") ' Empfänger Array
sAnhang = "" ' richtiger Pfad Muss natürlich richtig gesetzt werden
If Len(sKopie) > 0 Then vCopy = Split(sKopie, " ; ") 'cc Array
If Len(sBlindKopie) > 0 Then vBlind = Split(sBlindKopie, " ; ") 'bcc Array
Set session = CreateObject("notes.notessession") ' Notes muss gestartet sein
user = session.UserName
server = session.GetEnvironmentString("MailServer", True)
mailfile = session.GetEnvironmentString("MailFile", True)
Set db = session.getdatabase(server, mailfile)
Set doc = db.createdocument()
doc.Form = "Memo"
doc.SendTo = vAn ' an array
If Len(sKopie) > 0 Then doc.copyto = vCopy 'cc Array
If Len(sBlindKopie) > 0 Then doc.blindcopyto = vBlind 'bcc Array
doc.Subject = sBetrifft ' die Betreffzeile
signature = db.GetProfileDocument("CalendarProfile").GetItemValue("Signature")(0)
Set rtitem = doc.CREATERICHTEXTITEM("body")
Call rtitem.APPENDTEXT(sText & signature)
doc.SAVEMESSAGEONSEND = True
doc.PostedDate = Now
' *******************************************
If sAnhang <> "" Then
Set AttachMe = doc.CREATERICHTEXTITEM("Attachment")
Set DerAnhang = AttachMe.EMBEDOBJECT(1454, "", sAnhang, "Attachment")
End If
'*******************************
Call doc.Send(False)
Aufraeumen:
On Error GoTo Fehler
Set rtitem = Nothing
Set AttachMe = Nothing
Set DerAnhang = Nothing
Set db = Nothing
Set doc = Nothing
Set session = Nothing
Exit Sub
Fehler:
Resume Aufraeumen
End Sub
--- Ende Code ---
hier passiert allerdings überhaupt nichts...sobald ich
--- Code: ---signature = db.GetProfileDocument("CalendarProfile").GetItemValue("Signature")(0)
--- Ende Code ---
einfüge.
Wieso?
Und verliert bitte nicht die Geduld, ich gebe mir Mühe :)
@jBubbleBoy : ich nehme erstmal Peters Vorschlag an, und fange neu an
schroederk:
Bitte gewöhne Dir gleich von Anfang an an, eine vernünftige Fehlerbehandlung einzubauen.
Mit einem OnError Resume kommst Du garantiert nicht weiter. Wenn ein Fehler auftritt, soll dieser doch auch angezeigt werden, oder nicht?
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln