'Recipients'-Feld mit mehreren Werten befüllen

  • Hallo,


    ich generiere per Script direkt eine Mail in der Mailbox des Servers. Das klappt wunderbar. Nun sollen diese Mail mehrere bekommen. Das geht nur, wenn ich das ggf. mit Liste belegte 'SendTo'-Feld als Item in 'Recipients' komplett übernehme (Code1).
    Wenn ich mehrere Werte per Scipt reinmache (Code2), gibt es eine Fehlermeldung vom Router:


    Message xxxx contains no recipients.



    Der Code1 sieht so aus:


    Set doc_mail =db_mail.createdocument()
    doc_mail.form="Memo"
    doc_mail.from=session.UserName
    Set item2=doc.GetFirstItem("SendTo")
    Set item=item2.CopyItemToDocument(doc_mail,"SendTo")
    Set item=item2.CopyItemToDocument(doc_mail,"Recipients")
    doc_Mail.PostedDate=Cdat(Date$ + " " + Time$)
    doc_mail.Subject=doc.subject(0)
    Set rtitem = doc_mail.CreateRichTextItem( "BODY" )
    Call rtitem.AppendText(doc.Briefanrede(0))
    Call rtitem.AppendText(Chr(10) + Chr(10))
    ...
    Call doc_mail.Save(True,False)




    Der Code2 sieht so aus:


    Set doc_mail =db_mail.createdocument()
    doc_mail.form="Memo"
    doc_mail.from=session.UserName
    Set item=New NotesItem(doc_mail,"SendTo","")
    item.AppendToTextList("adr1@blabla.de")
    item.AppendToTextList("adr3@blabla.de")
    Set item=New NotesItem(doc_mail,"Recipients","")
    item.AppendToTextList("adr1@blabla.de")
    item.AppendToTextList("adr3@blabla.de")
    doc_Mail.PostedDate=Cdat(Date$ + " " + Time$)
    doc_mail.Subject=doc.subject(0)
    Set rtitem = doc_mail.CreateRichTextItem( "BODY" )
    Call rtitem.AppendText(doc.Briefanrede(0))
    Call rtitem.AppendText(Chr(10) + Chr(10))
    ...
    Call doc_mail.Save(True,False)


    Warum geht das in Code2 nicht ?


    Danke

  • Kann das eventuell daran liegen dass du die neu erzeugte Tesxtliste mit einem Leerwert erzeugst ?


    D.h. deine Empfängertextliste dürfte danach so aussehen:


    ""
    "adr1@blabla.de"
    "adr3@blabla.de"


    Trag beim Erzeugen des Feldes doch einfach die erste Adresse als Wert ein.

  • Nein, das ist es leider nicht. Wenn beim 'New Item' kein Wert drinsteht, heißt das nicht, daß ein leeres Listenelement erzeugt wird (habe ich im Debugger überprüft). Es stehen bei meinem Script ganz sauber zwei Listenelemnte wie geplant drin.
    Ich glaube, ich werde in einer äußeren Schleife einfach alle Mails einzeln erzeugen und losschicken .....

  • Da das im Beitrag nur ein Auszug des ganzen Scripts ist, fehlt am Anfang die Initialisierung der 'db_mail':



    Dim db_mail As Notesdatabase
    Set db_mail= session.GetDatabase("name/server/Firma", "mail.box")



    Da ich das Maildokument direkt in der Router-Mailbox (mail.box) erzeuge, wird es mit einfacher Speicherung quasi auf die Schiene gesetzt und weggeroutet.


    Vorteile dieses Verfahrens:


    frei definierbarer Absender
    keine Einträge im Send-Ordner des Scriptautors



    Zu dem Fehler habe ich noch herausgefunden, daß es Notes scheinbar nicht mag, wenn man das 'Recipients'-Feld als Item behandelt:


    Set item = New NotesItem( doc_mail, "Recipients" ,"adr1@blabla.de") '---> geht nicht !!
    doc_mail.Recipients="adr1@blabla.de" '---> geht !!


    Im Debugger sieht das Ergebnis, wie erwartet, gleich aus.
    Ist das nun ein Bug oder ein Feature ????


    Ich habe das ganze nun gelöst und kann die Mail nun samt Auswertung aller Felder 'SendTo', 'CopyTo' und 'BlindCopyTo' nach o.g. Verfahren versenden. Der Witz ist, das den Router diese Felder alle gar nicht interessieren, sondern nur das 'Recipients'-Feld. Ich sammle nun alle Listeneinträge der o.g. Felder und arbeite diese in einer Schleife ab. Jeder Schleifendurchlauf erzeugt ein Mail in der Mailbox mit dem 'Recipients'-Feld als jeweiligem Empfänger. Wenn Ihr am Code interessiert seid, kann ich ihn hier posten.


    Gruß
    Uwe

  • Setz doch mal nach Erzeugen des SendTo Items die Eigenschaft IsSummary des Items auf True.
    Das wird beim Erzeugen im Script nicht gemacht.
    Dann sollte es gehen.


    BTW frei definierbarer Absender geht auch ohne die Mail direkt in der Mail.box zu erzeugen:
    Durch Setzen der Felder Principal und SMTPOriginator