Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: Colli am 31.01.06 - 13:08:40

Titel: MailSend-Problem
Beitrag von: Colli am 31.01.06 - 13:08:40
Hallo,

in einer Maske habe ich die Felder SendTo, Subject, Bemerkung, die ich in die folgenden Funktion eintrage:

@If(SendTo="";"";@If(@IsNewDoc & @IsDocBeingSaved;@MailSend(SendTo;"";"";Subject;Bemerkung;"";"");""));

Wenn nun das Feld "SendTo" ausgefüllt wird, dann soll an diese Person eine Mail geschickt werden, klappt auch. Jedenfalls geht die Mail an die richtige Person und Subject wird auch richtig angezeigt.
Aber beim Mail öffnen erscheint der Kommentar, dass die Maske nicht gefunden wird. Und der Inhalt ist dann leer, der Text im Feld "Bemerkung" wird nicht übermittelt.

Jedenfalls will ich das Dokument auch nicht gleich mitschicken, sondern nur ne Mitteilung machen, dass da was Neues ist und vielleicht einen Link zum Dokument anbieten.

Ist in meiner Funktion ein Fehler oder muss ich sonst noch Einstellungen machen?
Titel: Re: MailSend-Problem
Beitrag von: ascabg am 31.01.06 - 13:19:30
Hi,

Wenn ich die Hilfe des designers richtig deute, dann musst du das Wort "Bemerkung" (ist ja ein Feld Deiner Maske) in Anfuehrungszeichen setzen.

Andreas

This formula sends a memo to David Lee with a blind copy to Joseph Smith in Support. The memo is titled "Status Report," and its body contains the message "Sorry it's late!" plus the contents of the STATUS and PLANS fields from the current document.

@MailSend("David Lee/";"";"Joseph Smith/Support";"Status Report"; "Sorry it's late!"; "STATUS":"PLANS"; [SIGN] : [DELIVERYREPORTCONFIRMED] : [RETURNRECEIPT])
Titel: Re: MailSend-Problem
Beitrag von: koehlerbv am 31.01.06 - 13:27:39
Dass der Feldname nicht in Anführungszeichen steht, ist schon korrekt. Dies wäre nur beim Parameter "Haupttextfelder" erforderlich.
Den Fehler kann ich eindeutig auch nicht erkennen. Ich würde aber mal die nicht benötigten Parameter weglassen statt der Leerstrings.

HTH,
Bernhard
Titel: Re: MailSend-Problem
Beitrag von: ascabg am 31.01.06 - 13:32:02
@koehlerbv (Bernhard)

Warum steht dann in der Hilfe <its Body contains the message "Sorry its  late!" PLUS the contents of the STATUS AND PLANS field from the current document>
und die Angabe der Feldnamen fuer STATUS und PLAN stehen in Anfuehrungszeichen?

Andreas
Titel: Re: MailSend-Problem
Beitrag von: koehlerbv am 31.01.06 - 13:38:47
"Sorry it's late" wird als Text in den Body geschrieben. Hätte man in einem Feld diesen String zu stehen, wird der gleiche Text verschickt, wenn man den Feldnamen (ohne Anführungszeichen! sonst wäre es ja wieder ein String) beim Parameter Anmerkung angibt.
Danach folgt als neuer Parameter die Hauptfelder, und diese werden (wie auch zum Beispiel bei dbLookup für das auszulesende Feld) in Anführungszeichen angegeben.

Bernhard
Titel: Re: MailSend-Problem
Beitrag von: Colli am 31.01.06 - 14:00:26
Keine Änderung, wenn ich die leeren Strings weglassen. Ich habe auch statt dem Feldinhalt "Bemerkung" den Text eingefügt, aber auch da passiert nix weiter.
Sieht also jetzt so aus:

@If(SendTo="";"";@If(@IsNewDoc & @IsDocBeingSaved;@MailSend(SendTo;Subject;"Neues Dokument");""));

Die Fehlermeldung "Maske XY ist nicht vorhanden" kommt immernoch und der Text "Neues Dokument" wird nicht in die Mail geschrieben.
Titel: Re: MailSend-Problem
Beitrag von: koehlerbv am 31.01.06 - 14:02:21
Was kommt denn genau als Maskenname (oder was steht im Item Form des empfangenen Mails)?
Titel: Re: MailSend-Problem
Beitrag von: Colli am 31.01.06 - 14:16:06
Der Maskenname heißt "Antrag".

Fehlermeldung: Maske nicht gefunden: Antrag
Wenn ich die Meldung 3 mal mit OK bestätige, öffnet sich die Mail, aber ohne Inhalt.

Die Eigenschaft "Form" der Mail:
Feldname: Form
Datentyp: Textliste
Datenlänge: 10 Byte
Seq.-Num.: 5
Doppeleintrags-ID: 0
Feld-Flags: SUMMARY

"Antrag"
Titel: Re: MailSend-Problem
Beitrag von: koehlerbv am 31.01.06 - 14:23:06
Ich habe eine Ahnung ... Dein Feld mit dem Empfänger heisst SendTo. Und genau dieses Feld braucht es, wenn das Dokument selbst versandt werden soll. Offensichtlich verkennt hier @MailSend, dass das ja eigentlich nur passieren soll, wenn
- @MailSend ohne Parameter verwendet wird und
- es ein Feld SendTo gibt.
Offensichtlich gibt es hier eine Verschlimmbesserung in R6.

Benenne Dein Feld SendTo mal um.

Bernhard
Titel: Re: MailSend-Problem
Beitrag von: Colli am 31.01.06 - 14:29:57
Wenn ich jetzt das neue Dokument speichern will, erscheint folgende Meldung:

Kein 'SendTo'-Feld im Dokument. Verwenden Sie stattdessen 'Weiterleiten' im Menü 'Aktionen'.

Ich nehme also mal an, dass ich das Feld  SendTo nennen muss beim Mailversand.
Titel: Re: MailSend-Problem
Beitrag von: koehlerbv am 31.01.06 - 14:35:11
Nein, muss es nicht - siehe Hilfe (und Beispiele dort). SendTo muss es nur geben und dann zwingend, wenn das ganze Dokument verschickt werden soll (was bei Dir ja offensichtlich aus irgendeinem Grunde geschieht).
Da muss noch was anderes faul sein.
Titel: Re: MailSend-Problem
Beitrag von: Colli am 31.01.06 - 14:40:39
Soll heißen, wenn ich das ganze Dokument verschicken will, brauche ich ein SendTo-Feld?!

Da ich aber nur eine Dokumentenverknüpfung versenden will, brauche ich dieses Feld nicht. Wie aber teile ich dem Agenten mit wohin die Mail gehen soll, wenn ich den Empfänger nicht in so einem Feld eintragen kann?
Titel: Re: MailSend-Problem
Beitrag von: koehlerbv am 31.01.06 - 14:42:33
Du brauchst das Feld nur anders zu nennen. SendTo ist ein reservierter Feldname.
Titel: Re: MailSend-Problem
Beitrag von: Colli am 31.01.06 - 14:51:58
Wenn ich das Feld "MailOptions" mit dem Wert 1 für sofortiges Senden in die Maske einfüge, dann kommt die Fehlermeldung: Kein 'SendTo'-Feld ...
Wenn ich dieses Feld lösche, dann kommt keine Meldung, die Mail wird aber auch nicht versandt.
Titel: Re: MailSend-Problem
Beitrag von: koehlerbv am 31.01.06 - 14:56:38
Das mit MailOptions hättest Du mal gleich sagen sollen. Siehe DesignerHelp - das triggert das Versenden des Dokumentes (was ja kein Memo sein muss).

Wo hast Du Deine Formel denn stehen? Es kann sein, dass Dein @IsNewDoc sich mit dem @IsDocBeingSaved beisst und das Mail deshalb nicht versandt wird.
Titel: Re: MailSend-Problem
Beitrag von: Colli am 31.01.06 - 14:59:27
Die Formel ist im Formel-Agenten eingetragen.

Ich habe jetzt in der Maske das Feld "MailEmpfaenger" eingefügt, andere Felder wie MailOptions sind entfernt, und ich habe einen einfachen Agenten "Mail senden" angelegt. Da kann man Felder oder feste Empfänger einfügen und den Mailtext schreiben. Ich krieg zwar keine Fehlermeldung, aber ne Mail verschickt der auch nicht.
Titel: Re: MailSend-Problem
Beitrag von: Colli am 31.01.06 - 15:02:46
Kommando zurück ....

Die Mails sind jetzt, verspätet, angekommen.

Der einfache Agent funktioniert.

Ich würde trotzdem gern wissen warum mein Formel-Agent nicht funktioniert?!
Titel: Re: MailSend-Problem
Beitrag von: koehlerbv am 31.01.06 - 17:05:07
Ich würde trotzdem gern wissen warum mein Formel-Agent nicht funktioniert?!

Ich wiederhole meine Frage nochmal: Wie löst Du den Agent denn überhaupt aus? @MailSend - richtig angewandt - funktioniert auch zuverlässig.
Titel: Re: MailSend-Problem
Beitrag von: Colli am 31.01.06 - 17:58:13
Ich möchte den Agenten durch Ereignis auslösen, nämlich nachdem ein neues Dokument angelegt wurde. Also "Wenn Dokumente eingefügt werden".

Titel: Re: MailSend-Problem
Beitrag von: koehlerbv am 31.01.06 - 18:29:35
Aber dann haben dort doch @IsNewDoc und Konsorten nix verloren. Irgendwie scheint mir das Szenario jetzt ein anderes als das zuerst beschriebene.

Bernhard
Titel: Re: MailSend-Problem
Beitrag von: Colli am 01.02.06 - 09:44:08
Richtig. Ich habe das auch schon wieder rausgenommen, nachdem ich mich weiter belesen habe und verschiedene Versuche unternommen habe. Ich hab streng nach der Domino Hilfe gehandelt und doch geht es nicht.

Nochmal von vorne:
Wenn ein neues Dokument angelegt wird und im Feld "MailEmpfaenger" eine Person eingetragen ist, dann soll eine Mail an diese Person geschickt werden. Betreff und Mailtext sind fix vorgegeben. Außerdem soll in der Mail nur der Link zum Dokument enthalten sein, nicht das gesamte Dokument mitsenden.
Wenn keine Person drin steht, dann auch keine Mail. Wenn Dokument bearbeitet wird, dann auch keine Mail mehr senden.

Also wie nun am besten?
Titel: Re: MailSend-Problem
Beitrag von: ghost am 01.02.06 - 10:05:13
Kannst Du den @MailSend nicht im QuerySave Event der Maske auslösen?

Viele Grüße
ghost
Titel: Re: MailSend-Problem
Beitrag von: Colli am 02.02.06 - 07:06:19
Keine Ahnung. Deswegen frag ich ja.

Wenn ich den im QuerySave laufen lasse, wie muss das denn genau aussehen?
Kann ich einige Parameter fest vorgeben und den Mailempfänger aus dem Dokument holen?
Titel: Re: MailSend-Problem
Beitrag von: Axel am 02.02.06 - 08:26:55
Hast du im QuerySave-Event bereits Code drinstehen. Wenn ja, ist es LotusScript oder Formeln?

Sei mir bitte jetzt nicht böse, aber wenn ich den Thread hier so lese, drängt sich mir das Gefühl auf, dass dir für die Notes-Entwicklung jede Menge Grundlagen fehlen. Auch wenn wir versuchen dir hier helfen, an der nächsten Ecke stehst du wieder vor der Wand. Ich rate dir, besorge dir entsprechende Literatur (z.B. aus dem Herdt-Verlag) oder besuche die entsprechenden Kurse. Anders kommst du nicht viel weiter und das ist, glaube mir, auf die Dauer sehr frustrierend.


Axel
Titel: Re: MailSend-Problem
Beitrag von: Colli am 03.02.06 - 09:31:22
Ich kann Lotus Script und Formeln unterscheiden!

Und nein, ich habe da bisher keinen Code drin stehen!

Ich möchte doch nichts weiter als einen Tipp oder Ansatz wie es richtig ist, oder was falsch bei mir ist oder wo ich genauer nachlesen kann, denn die "domino Hilfe" ist ausgeschöpft.
Titel: Re: MailSend-Problem
Beitrag von: cgorni am 03.02.06 - 10:05:36
Also eine Lösung im QuerySave könnte so aussehen:

Code
dim session as new NotesSession

if Source.IsNewDoc then
   set db        = session.CurrentDatabase
   set mail      = db.CreateDocument
   set rtitem   = mail.CreateRichTextItem("Body")

   mail.form      = "Memo"
   mail.Subject = "Das ist mein Thema"
   mail.SendTo = "Empfaenger/Firma"

   call rtitem.AppendText("Das hier steht in der Mail. Link --> ")
   call rtitem.AppendDocLink(Source.Document, "")

   call mail.send(false)
End if

Wobei ich mir jetzt nicht sicher bin ob das mit dem Doclink klappt, weil das Dokument ja noch nicht gespeichert ist. Alternativ gehts im PostSave und einem Flag das man setzt und speichert, wenn die Mail verschickt wurde. Dieses Flag überprüft man dann anstelle von "Source.IsNewDoc"

In diesem ZUsammenhang möchte ich noch auf die Funktion "SendMails" hinweisen unter
http://atnotes.de/index.php?topic=28364.0
das macht das Erstellen von LotusScript Mails etwas schneller  ;D

Ich hoffe ich habe den Thread richtig verstanden.
Just my $0.02.

C.

Titel: Re: MailSend-Problem
Beitrag von: Colli am 03.02.06 - 14:24:22
Den Mail-Empfänger möchte ich aber nicht fest vorgeben.
Kann ich dann das Feld angeben?

...
mail.SendTo = MailEmpfaenger
...
Titel: Re: MailSend-Problem
Beitrag von: smoki am 03.02.06 - 14:27:24
Hallo Colli!

Ja man kann da auch einen Dynamischen User oder via Liste/Array auch eine größere Anzahl von Empfängern angeben.

Gruss
Chris
Titel: Re: MailSend-Problem
Beitrag von: umi am 03.02.06 - 14:31:47
@Colli
Ja kannst Du.

z.B. falls dein Feld "Empfaenger" heisst.

anstatt mail.sendto="Empfaenger/FIrma"
so: mail.sendTo = source.fieldgettext("Empfaenger")
Titel: Re: MailSend-Problem
Beitrag von: Colli am 10.02.06 - 09:39:48
Das Script funktioniert wunderbar. Der Link geht übrigens auch, das Dokument kann direkt aus der Mail heraus geöffnet und bearbeitet werden.

Aber nun ist ein anderes Problem aufgetaucht:
In diesem Dokument sind Lese- und Autorenfelder vorhanden. Als Entwickler habe ich nun alle Rollen und lege testweise ein neues Dokument an, dass an mich geschickt werden soll. Klappt.
Aber in der Datenbank ist das Dokument nicht für mich sichtbar. Als wenn ich kein Leserecht dafür habe. Wenn ich die Mail aufrufe, kann ich das Dokument öffnen und bearbeiten und sehe auch, dass meine Rolle Leserechte hat.

Kann das was mit dem Script zu tun haben?
Titel: Re: MailSend-Problem
Beitrag von: koehlerbv am 10.02.06 - 09:50:49
Zeigt die Ansicht überhaupt Dokumente mit dem Maskennamen "Memo" an?
Titel: Re: MailSend-Problem
Beitrag von: Colli am 10.02.06 - 10:07:58
Die Maske mit der ich das Dokument erstellt, heißt "Antrag". Wenn in diesem Script mail form="Antrag" schreibe, dann bekomme ich beim Mail öffnen ne Fehlermeldung mit "Maske Antrag nicht gefunden" die Mail öffnet sich dann aber und ich kann das Dokument ansehen.
Das Dokument wird in der Ansicht nicht angezeigt.

Schreibe ich mail form="Memo" kommt keine Fehlermeldung, das Dokument wird geöffnet aus der Mail heraus, aber in der Ansicht auch nicht.

Was hat das mail form="" für eine Bedeutung?
Titel: Re: MailSend-Problem
Beitrag von: Colli am 10.02.06 - 10:14:14
Ich ziehe den letzten Kommentar zurück. :)
Hab schon verstanden.

Titel: Re: MailSend-Problem
Beitrag von: Colli am 10.02.06 - 11:09:58
Ich hab nun in den Ansichten, dass Dokumente der Maske "Antrag" und "Memo" angezeigt werden sollen.
Die Dokumente werden trotzdem nicht angezeigt!

Noch einen Tipp?

Hinzugefügt:

Die Maske hat irgendwie keinen richtigen Namen! Wenn ich eine Übersicht nach Maskennamen anlege, dann sind diese Dokumente "Nicht Kategorisiert".
Titel: Re: MailSend-Problem
Beitrag von: koehlerbv am 10.02.06 - 11:12:36
Memo-Dokumente werden Dir auch nicht angezeigt, da es diese nicht gibt: Das Memo wird lt. Code ja gar nicht gespeichert.

Bernhard
Titel: Re: MailSend-Problem
Beitrag von: Colli am 10.02.06 - 11:14:34
Ich muss jetzt also den Code so ändern, dass tatsächlich ein "Antrag" gespeichert wird und dieser Link dann versendet wird?

Oder was genau?
Titel: Re: MailSend-Problem
Beitrag von: koehlerbv am 10.02.06 - 11:16:46
Wenn der MailSend-Code im QuerySave der Maske "Antrag" steht, brauchst Du gar nichts zu machen - dort wird ja Dein Dokument (Antrag) automatisch gespeichert.

Bernhard
Titel: Re: MailSend-Problem
Beitrag von: Colli am 10.02.06 - 11:22:13

dim session as new NotesSession

if Source.IsNewDoc then
   set db        = session.CurrentDatabase
   set mail      = db.CreateDocument
   set rtitem   = mail.CreateRichTextItem("Body")

   mail.form      = "Antrag"
   mail.Subject = "Betreff"
   mail.SendTo = source.FieldGetText("MailEmpfaenger")

   call rtitem.AppendText("Das hier steht in der Mail. Link --> ")
   call rtitem.AppendDocLink(Source.Document, "")

   call mail.send(false)
End if


Das steht in QuerySave der Maske "Antrag".
Das Dokument wird nicht in den Ansichten angezeigt, weil kein Maskenname zugeordnet ist. Die Mail öffnet sich nur mit Fehlermeldung wegen Maske nicht gefunden, aber dann kann man sich den DokLink ansehen.

Was ist denn jetzt falsch?
Titel: Re: MailSend-Problem
Beitrag von: koehlerbv am 10.02.06 - 11:26:06
mail.form      = "Antrag" muss heissen:
mail.form = "Memo".

Dieses versandte Mail wird nicht gespeichert und hat mit Deinem Dokument "Antrag" nichts zu tun.

Dass Deine Anträge nicht angezeigt werden, muss einen anderen Grund haben.
Titel: Re: MailSend-Problem
Beitrag von: Colli am 10.02.06 - 11:39:44
Es wird aber kein Dokument "Antrag" angelegt!
Im Feld Form steht nix drin!
Was kann das für einen Grund haben?
Titel: Re: MailSend-Problem
Beitrag von: ascabg am 10.02.06 - 11:53:38
Hi,

Kleine Frage.
Gib es in der Maske "Antrag" bereits ein Feld "Form", welches Du belegts ?
(ich meine die Maske, in deren QuerySave der Code ablaeuft)

Zum Senden der Mail:
schon mal mail.Send(True)[b/] versucht.

Andreas
Titel: Re: MailSend-Problem
Beitrag von: Axel am 10.02.06 - 11:56:35
Es wird aber kein Dokument "Antrag" angelegt!
Im Feld Form steht nix drin!
Was kann das für einen Grund haben?

Im Moment verstehe ich hier nur Bahnhof.

Warum änderst du denn der Maskennamen für das Mail nicht in Memo ab, füllst die entsprechenden Felder, versendest das Mail und gut ist. Bernhard hat dir das doch schon ein paarmal geschrieben.

Wenn du in deinem Script mail.form = "Antrag" in mail.form = "Memo" änderst, dann sollte das funktionieren.

Wo ist denn genau das Problem?

Axel


Titel: Re: MailSend-Problem
Beitrag von: Colli am 10.02.06 - 11:56:55
@ascabg
Die Mail wird gesendet! Was soll dann mail.Send(True) für eine Bedeutung haben?

Ich hab kein Feld "Form" explizit in der Maske angelegt!
Titel: Re: MailSend-Problem
Beitrag von: Colli am 10.02.06 - 12:00:06
Es wird aber kein Dokument "Antrag" angelegt!
Im Feld Form steht nix drin!
Was kann das für einen Grund haben?

Im Moment verstehe ich hier nur Bahnhof.

Warum änderst du denn der Maskennamen für das Mail nicht in Memo ab, füllst die entsprechenden Felder, versendest das Mail und gut ist. Bernhard hat dir das doch schon ein paarmal geschrieben.

Wenn du in deinem Script mail.form = "Antrag" in mail.form = "Memo" änderst, dann sollte das funktionieren.


Das Ding hieß die ganze Zeit Memo! Erst als Bernhard anfing mich zu verwirren ;) mit dem Namen "Memo", kam ich auf die Idee, das mal zu versuchen. Ok ist rückgängig gemacht,

aber die Dokumente werden in den Ansichten nicht angezeigt!!!

Die Dokumente haben scheinbar keinen Eintrag in "Form"!
Titel: Re: MailSend-Problem
Beitrag von: koehlerbv am 10.02.06 - 12:02:05
@Andreas: MailSend (True) versendet die Maske mit, und das ist ja in diesem Falle nun Quatsch und wurde schon weiter vorne im Thread (als noch mit @MailSend gearbeitet wurde) abgestellt.

Was heisst eigentlich, dass in Form nichts drin steht? Ist das Item in den Document-Properties überhaupt vorhanden (wenn nicht, wäre das merkwürdig, und: Über's FrontEnd lässt sich das gar nicht manipulieren).

Bernhard
Titel: Re: MailSend-Problem
Beitrag von: Colli am 10.02.06 - 12:14:30
Ich hab eine Ansicht gemacht, die alle Dokumente nach ihrem Maskennamen gruppiert anzeigt.
In der Spalte "Form" steht aber nichts drin, merkwürdigerweise.

In den Dokumenteneigenschaften ist das Item "Form" gar nicht drin!
Titel: Re: MailSend-Problem
Beitrag von: Axel am 10.02.06 - 12:15:30
aber die Dokumente werden in den Ansichten nicht angezeigt!!!

Welche Dokumente?

Das gesendete Mail oder die Dokumente aus denen du das Mail verschickst?


Axel
Titel: Re: MailSend-Problem
Beitrag von: koehlerbv am 10.02.06 - 12:18:07
Das gesendete Mail wird gar nicht gespeichert, Axel. Siehe Code.

Dass das Item Form fehlt, ist schon sehr merkwürdig. Wenn niemandem einfällt, unter welchen Umständen das Teil verschwindet, solltest Du mal eine leere DB anlegen, Deine Maske dort hinein kopieren und diese DB mal hier posten. Ferndiagnose wird langsam ganz schwieirg.

Bernhard
Titel: Re: MailSend-Problem
Beitrag von: Axel am 10.02.06 - 12:45:26
Das gesendete Mail wird gar nicht gespeichert, Axel. Siehe Code.

Das hab ich schon gesehen. Nur mir ist aus der ganzen Geschichte nicht so ganz klar geworden, welche Dokumente wo nicht sichtbar sind.

Dass mit dem Form-Item ist wirklich sehr misteriös.


Axel
Titel: Re: MailSend-Problem
Beitrag von: Colli am 10.02.06 - 12:53:50
Ich lege mit der Maske "Antrag" ein Dokument an. Beim Speichern des Dokuments soll eine Mail versendet werden.
Die Mail wird auch gesendet, aber das Dokument wird in meinen Ansichten nicht angezeigt.

Ich werde nachher mal die DB hier reinstellen.
Titel: Re: MailSend-Problem
Beitrag von: koehlerbv am 10.02.06 - 13:01:52
Wenn Du die DB einstellst, denk' daran, dass diese keine konsistente ACL haben darf.
Titel: Re: MailSend-Problem
Beitrag von: Colli am 10.02.06 - 13:13:54
Es tut mir so leid, dass ich euch so intensiv in Anspruch genommen habe. Ich habe den Fehler gefunden. Ist noch ein überbleibsel aus den letzten Versuchen gewesen mit den Agenten.
Und zwar war ein Haken gesetzt bei "Maske im Dokument speichern".
Das hab ich entfernt und nun klappt es. Die Mail wird gesendet und das Dokument taucht auch richtig in der Ansicht auf.

DANKE für eure Hilfe.