Hallo,
ich bin totaler Notes-Anfänger und habe folgendes Problem:
Mit dem VBA-Code aus Google kann ich eine eMail aus Access generieren, sie wird sofort gesendet. Ich möchte aber, daß die eMail nicht sofort gesendet wird sondern erst nach Betätigung des Senden-Buttons. Es würde mir auch reichen, wenn die eMail zunächst im Entwurfs-Ordner landet und dann händisch verschickt werden muß. Weiß einer Rat?
Gruß und noch schöne Pfingsten
Otto1
Function SendNotesMail(MailTo$, KopieTo$, Mailtext$, MailAnhang$, _
MailAbsender$, MailBetreff$, Optional MailSenden As Boolean) As Boolean
Dim rtitem As Object
Dim EmbeddedObject As Object
Dim SessionNotes As Object
Dim NotesDB As Object
Dim 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
End If
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 vollständig in Notes an!", vbInformation + vbOKOnly
Exit Function
End If
' Empfängerliste erstellen
EmpfCnt = 0
Pos1 = InStr(MailTo, ";")
While Pos1 > 0
ReDim Preserve EmpfListe(EmpfCnt)
EmpfListe(EmpfCnt) = Left(MailTo, Pos1 - 1)
MailTo = Right(MailTo, Len(MailTo) - Pos1)
Pos1 = InStr(MailTo, ";")
EmpfCnt = EmpfCnt + 1
Wend
ReDim Preserve EmpfListe(EmpfCnt)
EmpfListe(EmpfCnt) = MailTo
' Neues Notes-Dokument anlegen (Mail)
Set NotesDoc = NotesDB.CreateDocument
With NotesDoc
.Form = "Memo"
.Subject = MailBetreff
.sendto = EmpfListe
.CopyTo = KopieTo
'.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 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
MailSenden = False
' Mail Senden oder Speichern
If MailSenden Then
.Send True
Else
.Save
End If
End With
SendNotesMail = True
Set SessionNotes = Nothing
Set NotesDB = Nothing
Set NotesDoc = Nothing
Set rtitem = Nothing
Set EmbeddedObject = Nothing
Exit_Mail_Click:
Exit Function
Err_Mail_Click:
MsgBox Err.Number & "-" & Err.Description
SendNotesMail = False
Resume Next
End Function
Ich befürchte, dieser Code wurde irgendwo "gefunden", aber nicht verstanden.
Zum letzten Posting:
Den Parameter MailSenden habe ich auch gesehen. Allerdings verlangt Notes diesen Parameter, es ist nicht möglich über SAVE die eMail so zu speichern.
Das ist Unfug. Der Parameter "MailSenden" ist Bestandteil der VBA-Routine und hat mit Notes so viel zu tun wie mein Garagentor mit dem Startpunkt "S" des Salzburger Flughafens.
Weiterhin:
Auch läßt Notes nicht die Möglichkeit zu, ohne die Vorgabe eines Empfängers die eMail zu generieren.
Auch falsch - im doppelten Sinne: Mit Notes (bzw. dem OLE- oder COM-Zugriff auf die Notes-API) wird zunächst ein *Dokument* erzeugt. Ob man dieses dann versendet oder nicht, *muss* man selbst entscheiden.
Wobei wir beim nächsten Punkt wären: Dieser Code-Bestandteil
MailSenden = False
' Mail Senden oder Speichern
If MailSenden Then
.Send True
Else
.Save
End If
sagt aus: Die Variable "MailSenden" wird zwangsweise auf False gesetzt, die folgenden Zeilen versenden daher das eMail überhaupt nicht.
So, wie der bisherige Code aussieht, wird ein derart erzeugtes Dokument auch in der Ansicht "Gesendet" angezeigt, da die Items "PostedDate", $MessageType und ExcludeFromView nicht angelegt werden.
Daher:
Ich habe keine Ahnung, was da nun codemässig wirklich getrieben wird. Das letzte Posting von "Otto1" lässt darauf deuten, dass der aktuelle Code anders aussieht als der gepostete.
Zum Code: Wenn nochmals Code gepostet wird, sollten unbedingt alle sowieso auskommentierten Zeilen auch gelöscht werden. Man kann keinem Hilfswilligen zumuten, dass er sich durch das Zeugs auch noch durchwühlt.
Tipp an "Otto1": Ohne die Dokumentation zum Domino-Designer und nur mit gefundenem Code geht hier gar nichts. Aber auch nur mit VBA-Kenntnissen sollte aber schon klar sein, dass in den gemachten Aussagen Widersprüche sein müssen.
Bernhard