Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: svarne am 06.07.06 - 09:07:59
-
Hallo,
ich habe ein Problem mit dem Mailversand nach einem ODBC- Adressimport.
Hier erstmal ein Ausschnitt des Agenten:
Call mylog.OpenAgentLog
strODBCName="WARTPROD"
strUserID="AAA"
strPassword="BBB"
Set db=session.CurrentDatabase
nResult=conn.ConnectTo(strODBCName, strUserID, strPassword)
If Not nResult Then
Call mylog.LogAction("No ODBC Connection")
Call mylog.Close
Exit Sub
End If
Set qry.Connection=conn
Set result.Query=qry
Print "Connection to "+strODBCName+" established"
qry.SQL="SELECT * FROM WART_PRD.WTGTOMAIL WHERE WART_PRD.WTGTOMAIL.ERLEDIGT=0 AND WART_PRD.WTGTOMAIL.ERLEDIGTAM Is Null;"
Call result.Execute
If result.IsResultSetAvailable Then
Do
result.NextRow
strRecipient = result.GetValue("EMPFAENGER", strRecipient)
Print strRecipient
strSubject=result.GetValue("BETREFF", strSubject)
strAttFilePath=result.GetValue("ANHANG", strAttFilePath)
Set maildoc = New NotesDocument(db)
maildoc.Subject=strSubject
maildoc.Form="Memo"
Set rtitem = New NotesRichTextItem(maildoc, "Body")
maildoc.SendTo=strRecipient
If Not strAttFilePath="" Then
If Not FileExists(strAttFilePath) Then
maildoc.WTGFailure="Dateifehler"
Call rtitem.AppendText("File "+strAttFilePath+" not found")
Else
Set object=rtitem.EmbedObject(EMBED_ATTACHMENT, "", strAttFilePath)
End If
End If
maildoc.SaveMessageOnSend = True
On Error 4294 Goto error_label
Call maildoc.send(False)
'Call maildoc.save(True,True)
'Print Err
resume_label:
Call result.SetValue("ERLEDIGT", -1)
Call result.SetVALUE("ERLEDIGTAM", Now)
Call result.UpdateRow()
Loop Until result.IsEndOfData
result.Close(DB_CLOSE)
Else
Call mylog.LogAction("NO Result Set available")
Call mylog.Close
Call conn.Disconnect
Exit Sub
End If
Call conn.Disconnect
Call mylog.Close
Exit Sub
error_label:
Call maildoc.save(True, True)
Call maildoc.PutInFolder("Fehler")
Goto resume_label
End Sub
Das funktioniert auch soweit das die Adressen aus der Access/SQL DB importiert und in das SendTo- Feld eingetragen werden; siehe LOG:
04.07.2006 13:09:18 AMgr: Agent ('WTGTOMAIL' in 'mail\wartout.nsf') printing: Connection to WARTPROD established
04.07.2006 13:09:18 AMgr: Agent ('WTGTOMAIL' in 'mail\wartout.nsf') printing: peter.XXX@XYZ.de, petra.YYY@XYZ.de
04.07.2006 13:09:18 Router: Transferred 1 messages to „xServerX“ via Notes
Im LOG des Mail-Routers sehe ich dann aber das nur die erste Adresse aufgelöst wird und von der zweiten Adresse erscheint nur der Name; siehe LOG:
04.07.2006 13:09:23 Router: Message 003D46CE transferred to „xServerX“ for peter.XXX@XYZ.de, petra.YYY via Notes
Wenn man die Mail aus dem Ordner „Gesendet“ des Mailfiles erneut versendet wird diese korrekt an beide Empfänger zugestellt.
So und nun kommt Ihr ;D
-
SendTo ist üblicherweise ein Multivalue Field, was in LotusScript üblicherweise durch ein Array abgebildet wird. Probier mal, die Empfänger in ein Array zu schreiben und dieses dem Feld zuzuweisen (siehe ReplaceItemValue in der Designer Hilfe).
-
Lieber svarne,
ich antworte hier statt über die private Nachricht.
Klar ist es eilig, klar hast Du zu wenig Ahnung von LotusScript. Das haben wir ja schon öfter hier gesehen.
Ja, ich denke, man kann mich als "Notes-Profi" bezeichnen, auch wenn ich täglich dazu lerne.
Nein, dazu habe ich nichts "in der Schublade", ich bin aber gerne bereit, Euch gegen ein entsprechendes Salär weiter zu helfen. Auch andere in diesem Forum machen das sicherlich gerne.
Falls Du kein Geld ausgeben möchtest, stell Deine konkreten Fragen hier herein, wir helfen Dir gerne weiter.
Und noch was: Klar kann man mit Copy & Paste "sooo schööön" arbeiten, aber dabei lernt man nichts und dafür ist das Forum eigentlich da, vor allem, wenn es um so Grundsätzliches wie den Umgang mit Multivalue-Feldern und Arrays geht.
-
Hallo m3,
danke für Deine aufrichtige Antwort und weiterhin viel Spaß!!
Dann schaun wir doch mal wie's weitergeht, ALLES WIRD GUT ;)
svarne
-
Wenn du die Zeile
maildoc.SendTo=strRecipient
ersetzst durch
maildoc.SendTo=Trim(Split(strRecipient,","))
wird es vermutlich klappen.
Und wenn du vorher noch abprüfst, daß Recipient nicht leer ist, wird es weniger Fehler geben.
-
Danke LN4ever,
das werde ich mal testen. Momentan habe ich das so gelöst, dass ich einfach mehrere Mails aus dem Access generiere.