Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: theo-1964 am 16.02.11 - 18:38:32

Titel: autoresponder aus Datenbank
Beitrag von: theo-1964 am 16.02.11 - 18:38:32
Hallo Forum,

ich brauche mal einen Tipp. (Wahrscheinlich mehrere)

ich möchte folgendes Szenario programmieren..

Es besteht bereits eine Webanwendung (einfache Notesdatenbank) in welcher anonyme Webuser ein Formular ausfüllen. Die erfassten Daten werden als Notes Dokument gespeichert. Dort hinterlassen Sie u.a. Ihre E-Mail Adresse.

Nun möchte ich möglichst per Notesscript eine Bestätigungsmail versenden.
Ich haben Agenten geschrieben der das macht nur kann ich diesen nicht periodisch laufen lassen, da dann der E-Mail Absender nicht richtig gesetzt wird.

Das Hauptproblem ist also den E-Mail Absender beliebig setzen zu können.

Ich würde mich über den ein oder anderen Hinweis sehr freuen..

mit freundlichen Grüßen
Titel: Re: autoresponder aus Datenbank
Beitrag von: Klafu am 16.02.11 - 18:41:35
Hallo und Willkommen im Forum.

Was geht da denn schief?

Wie wäre es, wenn du den Agent einfach "auf neue Dokumente" laufen lässt, er dann jeweils aus dem Feld die Mailadresse holt und eine kurze Mail da hin schickt ?

Chris
Titel: Re: autoresponder aus Datenbank
Beitrag von: Peter Klett am 16.02.11 - 19:35:23
Mails, die periodisch versendet werden, haben als Absender den Unterzeichner des Agenten. Unterzeichne den Agenten mit dem User, der als Absender eingetragen werden soll (z.B. mit einem technischen User, der den Namen der Firma trägt)
Titel: Re: autoresponder aus Datenbank
Beitrag von: tron55 am 17.02.11 - 12:57:45
Verstehe das Problem auch nicht.
Kannst du mal genauer sagen was schief läuft?

Prinzipiell hast du ein Feld in dem der User seine Mail einträgt
und das greifst du einfach durch eine Formel (auf den Feldinhalt) ab und
lässt bei Maileingang(!) automatisch den Agenten antworten.

Ich habe genau dasselbe hier mit einer Bewerberdatenbank +automatisierten Antwortmails.
Titel: Re: autoresponder aus Datenbank
Beitrag von: Mitch am 17.02.11 - 13:10:54
Das Hauptproblem ist also den E-Mail Absender beliebig setzen zu können.

Standardmäßig wird, wie schon gesagt, der Unterzeichner als Absender gesetzt.

Man kann im Maildokument vor dem Versand ein paar Felder setzen um das ein wenig zu verschönern:

Code
	Dim sendas$
	
	sendas$ = "Max Mustermann <m.mustermann@musterweb.de>"
	
	Call docMail.ReplaceItemValue("From", sendas$)
	Call docMail.ReplaceItemValue("Principal", sendas$)
	Call docMail.ReplaceItemValue("AltPrincipal", sendas$)
	Call docMail.ReplaceItemValue("SMTPOriginator", sendas$)
	Call docMail.ReplaceItemValue("$Principal", sendas$)
	Call docMail.ReplaceItemValue("$AltPrincipal", sendas$)
	Call docMail.ReplaceItemValue("SendFrom", sendas$)

Vielleicht reicht dir das ja schon.

Gruß,

Mitch
Titel: Re: autoresponder aus Datenbank
Beitrag von: Peter Klett am 17.02.11 - 13:13:01
From in der Mail zu ändern, nützt nichts, da es von Notes beim Versand (zu Recht) korrigiert wird.
Titel: Re: autoresponder aus Datenbank
Beitrag von: marschul am 17.02.11 - 13:19:31
Peter hat Recht. Sämtliche Send-Methoden (Formel, Script) ersetzen den Eintrag in "From" durch den aktuellen User / Unterzeichner des periodischen Agenten (bzw. beim Agent durch den Eintrag in "Ausführen im Namen von"). Vermeiden lässt sich das nur, indem man das zu sendende Maildokument direkt in der mail.box speichert - das Prinzip von Spam-Schleudern, also Pfui!  :-X

Gruß
Marco
Titel: Re: autoresponder aus Datenbank
Beitrag von: Mitch am 17.02.11 - 13:34:36
Mag sein, dass nicht alle Felder ziehen. Ich habe das jetzt einfach aus einer unserer Anwendungen genommen.

Was ich aber sagen kann: In meiner Inbox steht als Absender Max Mustermann drin. Wenn ich die Mail öffne, sehe ich auch Max Mustermann. Zugegeben: Dort steht dann "Gesendet von (Unterzeichner des Agents)" drunter. Aber wie ich sagte: Ein wenig verschönern... :)
Titel: Re: autoresponder aus Datenbank
Beitrag von: theo-1964 am 17.02.11 - 16:16:44
 :) Ich danke allen. Das hat mir die notwendige Erleuchtung gebracht..
Auf die Sache mit der Signatur war ich nicht gekommen..
Titel: Re: autoresponder aus Datenbank
Beitrag von: Scotty67 am 23.02.11 - 08:31:41
...darf ich mich an diesen Thread anhängen  ;D

habe das gleiche Problem !
Nachdem es ja nie jemand gestört hat das ich als Agentsigner der Absender von zeitlich gesteuerten Mails war muss ich jetzt
aber eine Änderung durchführen.

Bist jetzt hat ein normales Personen-Dokument in meinem Domänen-NAB gereicht. Dieses Personendokument habe ich per Hand angelegt, also ohne einen Benutzer zu registrieren !

Wenn ich Euch richtig verstanden habe brauche ich jetzt einen registrierten Agent-Signer der als "Person" registriert ist ?
Als outbound-SMTP Adresse wird jene verwendet die ich bei diesem Benutzer hinterlegt habe ?
Titel: Re: autoresponder aus Datenbank
Beitrag von: marschul am 23.02.11 - 10:02:41
Nicht unbedingt:

Wenn Du dem MemoDoc ein Feld "Principal" verpasst und dort eine Absenderadresse einträgst, wird diese beim Empfänger auch angezeigt und Antworten gehen an diese Adresse. Allerdings wird das Feld "From" beim Senden automatisch mit dem Agentunterzeichner gefüllt und das führt beim Empfänger zur Anzeige "Gesendet von..." mit dem Namen des Unterzeichners.
Der Agentunterzeichner muss m.E. eine "richtig" registrierte Person sein (wie soll es anders gehen?).

Gruß
Marco
Titel: Re: autoresponder aus Datenbank
Beitrag von: Scotty67 am 23.02.11 - 10:16:33
....wie gesagt die Funktion des Principal's ist auch OK, ein Reply geht auch an diesen Principal zurück..
Aber es ist offensichtlich nur die halbe Wahrheit weil ich als "echter" Sender auftauche und die Mail-Gegenstelle
nur Mails akzeptiert wenn der "echte" Sender dem im Feld Principal geführten entspricht...

ich nehme auch an das ich den Benutzer normal registrieren muss wie eben einen anderen normalen Benutzer ...
Titel: Re: autoresponder aus Datenbank
Beitrag von: kawie am 24.02.11 - 08:21:36
Sobald du doc.send benutzt ja! Allerdigns wurde auch schon erwähnt, das ein speichern in der "mail.box" dazu führt das es vom mail router versand wird mit den
Parametern die du angegeben hast. Also auch den gewählten Versender.

Auch wenn es als Spam routine bezeichnet wurde, ist dieses vorgehen meiner Ansicht nach nicht wirklich verwerflich.
Titel: Re: autoresponder aus Datenbank
Beitrag von: Scotty67 am 24.02.11 - 08:33:36
Sobald du doc.send benutzt ja! Allerdigns wurde auch schon erwähnt, das ein speichern in der "mail.box" dazu führt das es vom mail router versand wird mit den
Parametern die du angegeben hast. Also auch den gewählten Versender.

Auch wenn es als Spam routine bezeichnet wurde, ist dieses vorgehen meiner Ansicht nach nicht wirklich verwerflich.


hab das schon weiter oben im thread gelesen, wie darf man sich das codemäßig vorstellen ?
der entscheidende part in meiner routine schaut derzeit so aus:


If active(0) = "1" Then
   Set itemProcessed = doc.AppendItemValue( "NotifyProcessed", 1 )
   emailAddress=docSupporter.GetItemValue("NLSupporterEmail")
   'docmail.principal = "<ni-service@at.abb.com>< >"
   docmail.principal = "ni-service@at.abb.com@ABB_ATABB"
   'docmail.Subject="" & SenderEmailSubject(0)
   docmail.body=SenderEmailBody(0)
   docmail.SendTo=emailAddress(0)
   docmail.Send (False)
   Call doc.Save( False, True )
Else
End If


wäre "Call docmail.CopyToDatabase( mail1box )"
richtig ? schon klar mail1box gehört deklariert !

Titel: Re: autoresponder aus Datenbank
Beitrag von: ascabg am 24.02.11 - 08:42:14
Hallo,

Die muss Deine zu versendende Mail direkt in der mail.box des Servers erstellen und speichern.
(NICHT SENDEN)

Das Problem was Du im ersten Moment ebenfalls noch zu beachten hast ist, wenn es auf dem Server keine mail.box gibt. (sondern nur eine mail1.box, mail2.box, ...)

Dies muesstest Du vorab duch Deinen Code pruefen lassen.


Andreas
Titel: Re: autoresponder aus Datenbank
Beitrag von: kawie am 24.02.11 - 08:48:22
Sobald du doc.send benutzt ja! Allerdigns wurde auch schon erwähnt, das ein speichern in der "mail.box" dazu führt das es vom mail router versand wird mit den
Parametern die du angegeben hast. Also auch den gewählten Versender.

Auch wenn es als Spam routine bezeichnet wurde, ist dieses vorgehen meiner Ansicht nach nicht wirklich verwerflich.


hab das schon weiter oben im thread gelesen, wie darf man sich das codemäßig vorstellen ?
der entscheidende part in meiner routine schaut derzeit so aus:


If active(0) = "1" Then
   Set itemProcessed = doc.AppendItemValue( "NotifyProcessed", 1 )
   emailAddress=docSupporter.GetItemValue("NLSupporterEmail")
   'docmail.principal = "<ni-service@at.abb.com>< >"
   docmail.principal = "ni-service@at.abb.com@ABB_ATABB"
   'docmail.Subject="" & SenderEmailSubject(0)
   docmail.body=SenderEmailBody(0)
   docmail.SendTo=emailAddress(0)
   docmail.Send (False)
   Call doc.Save( False, True )
Else
End If


wäre "Call docmail.CopyToDatabase( mail1box )"
richtig ? schon klar mail1box gehört deklariert !


Du kannst es direkt in der mail.box erstellen dann sparst du dir das speichern in der aktuellen db und das "rüberschieben". Es sei den du willst es zu archivzwecken aufbewahren.

Was im gegensatz zu send auf jeden Fall enthalten sein muss, ist das Feld "Recipients" gefüllt mit den empfängern der Mail. Zusätzlich zu den gewünschten Feldern SendTo,CopyTo etc.

als Beispiel dafür:

Code
	Dim recipients As New NotesItem( maildoc, "Recipients", "" )
	Let recipients.IsSummary = True
	Call recipients.AppendToTextList( maildoc.GetItemValue( "SendTo" ) )
	Call recipients.AppendToTextList( maildoc.GetItemValue( "CopyTo" ) )
	Call recipients.AppendToTextList( maildoc.GetItemValue( "BlindCopyTo" ) )

Wie Andreas schon geschrieben hat, darfst du auf keinen fall doc.send benutzten wenn du sie mit einem eigenen Absender benutzen willst.



Gruss

Kai