Set db = session.CurrentDatabase
Set view = db.GetView( "OpenByNumber" )
Set doc = view.GetFirstDocument
While Not ( doc Is Nothing )
docdate = doc.GetItemValue(docvergleichsfeld(0))
docdatumwert = Today-docdate(0)
vergleichswert = docvergleichswert(0) -docdatumwert
If vergleichswert < 0 Then
teststr = docmailadresse(0)
delim = ","
ret = Split(teststr, delim) 'hier wird der "Feldinhalt" getrennt bei jedem Komma
For x = 0 To 20 'Max 21 Mailadressen können eingetragen werden
If ret(x) = "" Then
Exit Sub 'Programm wird abgebrochen
Else
doc.Form = "Memo"
doc.SendTo =ret(x)
doc.Subject = docmailsubject(0)
doc.Body = docmailbody(0)
Call doc.Send( False )'Mail wird verschickt
End If
Next 'For-schlaufe
Else 'gehört zur "If vergleichswert < 0 Then" Schlaufe
Set doc = view.GetNextDocument( doc )
End If
Wend
das ist der entscheidene CODE... und nun habe ich das Problem das automatisch ein Anhang mitgschickt wird, der in irgend einem Feld ist, wobei ich den niergends dazu füge zum Mail?!
kann man den einfach wieder löschen?
gibt es eine andere möglichkeit, was könnte die ursache sein das automatisch ein Attachment eingefügt wird?
sorry...ich versuche mich genauer zu fassen...
es ist ein Agent... ich poste ganz unten mein komplterer Code...
es ist ein Agent der schaut ob ein Dokument älter als x tag ist, das funktioniert auch alles einwandfrei. Nun habe ich gedacht das sei nun alles Tip Top, nun in der Praxis ist mir dann aufgefallen, falls in einem Dokument in irgend einem Richfeld eine Datei ist(egal welches format, egal wie sie heisst) wird sie als Anhang mitgemailt. ->Es Handelt sich hierbei um eine Helpdeskdatenbank...
der Agent sollte dann täglich ablaufen.
Sub Initialize
Dim session As New NotesSession
Dim db As NotesDatabase
Dim db_werte As NotesDatabase
Dim view As NotesView
Dim doc As NotesDocument
Dim uidoc As NotesUIDocument
Dim docwert As NotesDocument
Dim docmailadresse As Variant
Dim mailadresse As Variant
Dim docmailsubject As Variant
Dim docmailbody As Variant
Dim mailbox As New NotesDatabase("","")
Dim docdate As Variant
Dim docdatumwert As Variant
Dim docvergleichswert As Variant
Dim docvergleichsfeld As Variant
Dim vergleichswert As Variant
Dim ret As Variant
Dim teststr As String
Dim delim As String
On Error Resume Next
'********************************************************************
' Werte auslesen aus Konfiguration "SYSTEMPARAMETER - DO NOT DELETE !!!!!"
'********************************************************************
Set db_werte = session.CurrentDatabase
Set view = db_werte.GetView("($LUConfig)")
Set docwert = view.GetDocumentByKey("AGENTALARMMAILADRESSE") 'Email Adresse wird hier ausgelesen
docmailadresse = docwert.GetItemValue("cfgKeywords")
Set docwert = view.GetDocumentByKey("AGENTALARMMAILDAUER") 'Anzahl Tage, die das Dok. alt sein darf wird hier ausgelesen
docvergleichswert = docwert.GetItemValue("cfgKeywords")
Set docwert = view.GetDocumentByKey("AGENTALARMMAILFELD") 'Feldname vom "VergleichsFeld" wird ausgelesen
docvergleichsfeld = docwert.GetItemValue("cfgKeywords")
' Messagebox(docvergleichsfeld(0))
Set docwert = view.GetDocumentByKey("AGENTALARMMAILSUBJECT") 'Mailsubject wird ausgelesen
docmailsubject = docwert.GetItemValue("cfgKeywords")
Set docwert = view.GetDocumentByKey("AGENTALARMMAILBody") 'Mailbodywird ausgelesen
docmailbody = docwert.GetItemValue("cfgKeywords")
'********************************************************************
' ENDE - Werte auslesen aus Konfiguration
'********************************************************************
Set db = session.CurrentDatabase
Set view = db.GetView( "OpenByNumber" )
Set doc = view.GetFirstDocument
While Not ( doc Is Nothing )
docdate = doc.GetItemValue(docvergleichsfeld(0))
docdatumwert = Today-docdate(0)
vergleichswert = docvergleichswert(0) -docdatumwert
If vergleichswert < 0 Then
teststr = docmailadresse(0)
delim = ","
ret = Split(teststr, delim) 'hier wird der "Feldinhalt" getrennt bei jedem Komma
For x = 0 To 20 'Max 21 Mailadressen können eingetragen werden
If ret(x) = "" Then
Exit Sub 'Programm wird abgebrochen
Else
doc.Form = "Memo"
doc.SendTo =ret(x)
doc.Subject = docmailsubject(0)
doc.Body = docmailbody(0)
Call doc.Send( False )'Mail wird verschickt
End If
Next 'For-schlaufe
Else 'gehört zur "If vergleichswert < 0 Then" Schlaufe
Set doc = view.GetNextDocument( doc )
End If
Wend
End Sub
1) Objekt-Recycling ist nicht das, was Du tun willst.
Aus Deinem Code:
Set doc = view.GetFirstDocument
...
doc.Form = "Memo"
doc.SendTo =ret(x)
doc.Subject = docmailsubject(0)
doc.Body = docmailbody(0)
Call doc.Send( False )'Mail wird verschickt
...
Set doc = view.GetNextDocument( doc )
Du nimmst das Dokument so, wie Du es gefunden hast, verpasst Ihm noch ein paar zusätzliche Felder und verschickst es.
Da darfst Du Dich nicht wundern, wenn die Attachments mitgeschickt werden. Die können in $FILE Items stehen, im Body, ....
Und nein, "doc.Body = docmailbody(0)" überschreibt NICHT die Inhalte des BODY Feldes, sondern hängt den Inhalt von docmailbody(0) an doc.Body an. Siehe dazu den Abschnitt "Extended class syntax" im Designer-Hilfe Dokument zur "AppendItemValue method".
Sauber wird so etwas gelöst, indem man a) einen neues Dokument zum Mailen erstellt und b) die Werte, die gemailt werden sollen über GetItemValue() aus dem Ursprungsdokument holt.
2) Warum verwendest Du mehrere "normale" Dokumente anstelle eines Profildokumentes?
3) Datumsvergleich
docdate = doc.GetItemValue(docvergleichsfeld(0))
docdatumwert = Today-docdate(0)
vergleichswert = docvergleichswert(0) -docdatumwert
Für sowas haben uns die lieben Leute bei Iris/Lotus/IBM notesDateTime.TimeDifference() gegeben.
'******************************************Mail erstellen*******************************
'Dokument speichern, um die Felder sichtbar zu machen
Set uidoc = workspace.CurrentDocument
Call uidoc.Save
Set doc = uidoc.document
Set Database = session.CurrentDatabase
'Auslesen, welche Pers. das Dokument erstellt hat
sendas = uidoc.FieldGetText( "mailCreator" )
' Neues Mail machen in Servermailbox
Set maildoc = New Notesdocument(Database)
maildoc.Form = "Memo"
maildoc.From = sendas
maildoc.SendFrom = item
item =ret(x)
Call maildoc.ReplaceItemValue( "SendTo", item )
Call maildoc.ReplaceItemValue( "recipients", item )
item_sub = docmailsubject(0)
Call maildoc.ReplaceItemValue( "Subject", item_sub )
Call maildoc.Save(True, False, False)
Call maildoc.Save(True, False, False)
Call maildoc.Send(False )
Call uidoc.Close
'*******************************************Mail erstellen*********************************
soo das wars... 1000dank an m3 ;-) das wusste ich leider nicht... vielen dank für dein Verständniss, dass hier auch Anfänger fragen stellen, was für dich/euch halt sonnenklar ist...
vielen vielen Dank
greeeeez ivan