Zum Inhalt springen

Powermail: Empfänger per TS überschreibbar?

Erstellt am 15. Mai 2009 · 21 Antworten · letzte Antwort am 20. April 2012 · Seite 1 von 2

Tags: Powermail, Frage

gegi ·

Hallo,

meine Website ist in zwei Teilbereiche (A und B) aufgeteilt. Für jeden Teilbereich soll ein Kontaktformular bereit stehen, das an das Design des jeweiligen Bereichs angepasst ist.

Zuerst habe ich deshalb in Teilbereich A eine Formular-Seite angelegt. Da man das Powermail-Formular nicht so einfach kopieren kann, wird dessen Inhalt auf einer Seite im Teilbereich B über die Typo3-Option "Inhalt dieser Seite anzeigen: Formular-Seite aus A" eingebunden.

Über die CSS-Dateien der Teilbereiche kann somit das gleiche Formular in Bereich A und B ein unterschiedliches Aussehen erhalten.

Auch die Reply-Email läßst sich für beide Bereiche über Typoscipt (TS) anpassen

[PIDinRootline = 1] #Abfrage, ob in Bereich A
plugin.tx_powermail_pi1.email.sender_mail {
# Reply name
reply.name = TEXT
reply.name.value = Bereich A

# Reply email
reply.email = TEXT
reply.email.value = bereichA@eineurl.url
}
[END]

[PIDinRootline = 19] #Abfrage, ob in Bereich B
plugin.tx_powermail_pi1.email.sender_mail {
# Reply name
reply.name = TEXT
reply.name.value = Bereich A

# Reply email
reply.email = TEXT
reply.email.value = bereichB@eineurl.url
}
[END]

Das eigentliche Problem:
Nun würde ich gerne den Empfänger der Email, den ich in meinem Fomular angegeben habe, über TS überschreiben, also z.B. personA@eineurl.url für Bereich A und personB@eineurl.url für Bereich B. (Somit könnte ich ein Formular für Zwei Webseiten nutzen, würde mir also die Pflege eines zweiten Formulars sparen.)

Wisst Ihr, ob das geht und welches Typoscript dafür zuständig ist?

Vielen Dank im Voraus!

gegi ·

Eine Lösung:
Es mag sein, dass über andere Konstrukte/Marker andere Lösungen möglich sind, folgende funktioniert bei mir.

1. Schritt - Marker im Backend einfügen

###POWERMAIL_TYPOSCRIPT_RECIEVER-SUBJECT###
###POWERMAIL_TYPOSCRIPT_RECIEVER-EMAIL###
###POWERMAIL_TYPOSCRIPT_SENDER-SUBJECT###

Wichtig: Die Marker müssen mit POWERMAIL_TYPOSCRIPT_ beginnen

2. Schritt - Über TS Objekte definieren und mit Inhalt füllen

plugin.tx_powermail_pi1 {
  # set sender and reciever subject and email from own marker in backend to TEXT
  dynamicTyposcript.reciever-subject = TEXT
  dynamicTyposcript.reciever-email = TEXT
  dynamicTyposcript.sender-subject = TEXT
}
[PIDinRootline = 1] # hier beispielhaft für Bereich A
plugin.tx_powermail_pi1 {
  # fill own subject and email markers with data
  dynamicTyposcript.reciever-subject.value = Eintrag von Kontaktformular A
  dynamicTyposcript.reciever-email.value = Person@BereichA.url
  dynamicTyposcript.sender-subject.value = Ihr Eintrag auf Bereich A
}
[END]

Hinweis: plugin.tx_powermail_pi1.dynamicTyposcript.xxx macht den Zauber

mardl ·

Hallo,

ich hab "fast" das gleiche Problem.

Der einzige unterschied ist, das ich den Empfänger abweichend einer Auswahl in der Eingabe machen möchte.

Verwende 3 Radios (Allgemein, Anfrage, Reklamation). Je nach auswahl soll eine andere Abteilung das Mail bekommen.

Als Empfänger hab ich folgenden Marker angelegt:
###POWERMAIL_TYPOSCRIPT_RECIEVER-EMAIL###

Und hier der TS-Code

plugin.tx_powermail_pi1.dynamicTyposcript.reciever-email = TEXT
## Default-Email
plugin.tx_powermail_pi1.dynamicTyposcript.reciever-email.value = fehler@test.de

[globalVar = GP:tx_powermail_pi1|uid43=reklamation ] 
	plugin.tx_powermail_pi1.dynamicTyposcript.reciever-email.value = email1@test.de
[end]

[globalVar = GP:tx_powermail_pi1|uid43=allgemein ] 
	plugin.tx_powermail_pi1.dynamicTyposcript.reciever-email.value = email2@test.de
[end]

[globalVar = GP:tx_powermail_pi1|uid43=anfrage ] 
	plugin.tx_powermail_pi1.dynamicTyposcript.reciever-email.value = email3@test.de
[end]

Damit ich sehe was passiert, lasse ich mir in der Bestätigungsseite vor dem versenden nochmal die Werte anzeigen, und es wird je nach auswahl die richtige E-Mail angezeigt.

Wenn ich dann auf "Senden" drücke, kommt die "Danke für ihre Nachricht" Seite. Auch hier lasse ich mir nochmal die E-Mail anzeigen, und bekomme dann die Default-Adresse.

Das Mail beinhaltet dann als Absender auch die defaultadresse und auch diese bekommt das Mail.

Zu meinen Fragen:
1. Ist es möglich anhand einer Auswahl (Radio, Checkbox) eine abweichende Empfänger E-Mail zu definieren.
2. Wenn ja, was mach ich falsch und wie gehts richtig?

Wäre sehr dankbar für eine Hilfe, da ich nicht das Mailformular 3 Mal machen möchte!

Danke
Martin

mardl ·

Hallo,

ja, dass hab ich gesehen. Möchte aber nicht die User in der Datenbank anlegen und über checkboxen auswählen.

1. Der verweis auf die Empfänger-E-Mail soll ja nicht auswählbar sein
2. Möchte vermeiden die User in eine DB einzutragen, sondern "hardcodiert" über TS zuweisen. Abhängig von der Bedingung die ausgewählt ist.

Die Bedingung gibt ja an, um welche Anfrage das es sich handelt (Anfrage, Reklamation usw.) und sollte nicht die ID auf einen User-DB beinhalten.

Wie gesagt, die Zuweisung funktioniert ja in TS, aber halt nicht bis zum abschluss wo es dann um das versenden geht!

Da "vergisst" powermail anscheinend die Zuweisung und demensprechend greift die Abrage nicht!

Muss ich es über den "hack" machen? Keine andere Lösung? Die Sache mit den dynamischen variablen ist ja super!

danke
Martin

mardl ·

Ich nochmal,

lass mir jetzt auf der Antwortseite (Danke für Ihre nachricht) nochmal die Daten anzeigen aus ###POWERMAIL_ALL###.

Da wird die richtige Einstellung angezeigt. Aber die Variable ###POWERMAIL_TYPOSCRIPT_RECIEVER-EMAIL### wird von TS nicht mehr geändert sondern bleibt auf der Defaulteinstellung.

Spontan würde ich sagen, das auf der Antwortseite das TS nicht mehr gecheckt, durchlaufen wird (bin nicht so fit in Typo3ablauf ;-))

gruß
Martin

ehontheim ·

Hallole!

Auf dringenden Wunsch eines einzelnen Kunden sollte folgende Konstellation "mal schnell" abgebildet werden:
- wenn "Allgemeine Anfrage" ausgewählt, dann an Empfänger_1 und Empfänger_2
- wenn "Angebot" ausgewählt, dann an Empfänger_3
- wenn "Support" ausgewählt, dann an Empfänger_4

Gelöst habe ich es wie folgt:
- 4 be_user angelegt und die entsprechende Empfänger-Emailadresse angegeben
- bei realName des be_users jeweils "Allgemeine Anfrage", "Angebot", bzw. "Support" eingetragen. Sprich, genau den Text, den der Besucher mittels Radiobutton auswählt
- in Powermail im Tab Empfänger unter "Alternativer SQL-Query" folgendes SQL-Statement eingetragen: select email from be_users where realName = '###UID4###'
Dabei entspricht UID4 den Radiobuttons.

Das war's. War tatsächlich inklusive Test (in einer Spielumgebung) schnell angelegt. Ich denke, das ist auf diese Weise gut machbar, denn die Konstellation war ja nicht wirklich komplex.

Grüße

Erwin

einpraegsam.​net ·

@ehontheim: Damit öffnest du normalerweise Tür und Tor für SQL injection. Powermail müsste aber alle Hochkommas auskommentieren - teste das aber nochmal!

mardl ·

Ich nochmal,

also das Beispiel ist auch angelehnt an
#76461

Ich werde es mal ausprobieren. Obwohl die Sache über TS für mich einfacher und logischer klingt.

Die Frage ist halt nur, warum die "if-Abfrage" für das versenden nicht mehr greift?

#
[globalVar = GP:tx_powermail_pi1|uid43=reklamation ]
#
        plugin.tx_powermail_pi1.dynamicTyposcript.reciever-email.value = email1@test.de
#
[end]

gruß
Martin

einpraegsam.​net ·
mardl schrieb

Die Frage ist halt nur, warum die "if-Abfrage" für das versenden nicht mehr greift?

Deine Condition kann nur funktionieren wenn:
a) Keine Bestätigungsseite verwendet wird
b) Dein Formular auf einer Seite ist

Warum? Weil du Werte aus dem POST Request abfragst und nicht aus der Session...

mardl ·

mensch bist du schnell ;-)

hab die Sache von "ehontheim" ausprobiert und funktioniert einwandfrei und fix.

Deine Condition kann nur funktionieren wenn:
a) Keine Bestätigungsseite verwendet wird
b) Dein Formular auf einer Seite ist

a) Meinst du mit Bestätigungsseite die Seite
"Sind diese Angaben korrekt?", Wenn ich unter Formulardaten in Powermail einen hacken bei "Bestätigungsseite aktivieren" mache? Eigentlich brauch ich die Seite nicht!

b) Formular ist komplett auf einer Seite!

Warum? Weil du Werte aus dem POST Request abfragst und nicht aus der Session...

Würde es aus der Session funktionieren? Wenn ja, wie würde da die Syntax lauten?

Vielen Dank
Martin

PS: ...und so nebenbei mal ein sehr großes Lob für den Powermailer

einpraegsam.​net ·

Gute Frage - sollte wohl so funktionieren:

[globalVar = TSFE:fe_user|sesData|powermail_1272|uid43]
...
[end]

1272 ist die uid des tt_content Datensatzes mit powermail...

mardl ·

Super Sache, funktioniert einwandfrei!

Um dem Problem mit/ohne Bestätigungsseite zu umgehen, frage ich einfach beides ab.

plugin.tx_powermail_pi1.dynamicTyposcript.reciever-email = TEXT
# Session Abfragen
[globalVar = TSFE:fe_user|sesData|powermail_78|uid43=Allgemein]
	plugin.tx_powermail_pi1.dynamicTyposcript.reciever-email.value = mail1@test.de
[end] 
# POST abfragen
[globalVar = GP:tx_powermail_pi1|uid43=Allgemein ] 
	plugin.tx_powermail_pi1.dynamicTyposcript.reciever-email.value = mail1@test.de
[end]

Obwohl die Sache auch über den be_user funktioniert, gefällt es mir so besser.

Vielen Dank für deine (eure) Unterstützung

Martin

einpraegsam.​net ·

Die POST Daten werden sowieso zu Beginn der Laufzeit in die Session geschrieben - es sollte also immer mit sesData funktionieren...

Cheers, Alex

mardl ·

hi einpraegsam,

hab gestern das update auf die aktuelle version gemacht.

Leider habe ich jetzt das problem das nicht mehr nur die email-adresse als absender bei der bestätigungsmail drin steht, sondern immer "powermail [email1@test.de]"

vor dem Update stand nur "email1@test.de" da.

Dachte ich kann das mit dem

plugin.tx_powermail_pi1.dynamicTyposcript.reciever-email.value = email1@test.de

das Problem beheben, wenn ich da einen Namen angeben kann. Hab aber nichts dazu gefunden wie

plugin.tx_powermail_pi1.dynamicTyposcript.reciever-name.value = DaMardl

Kannst du mir da weiterhelfen bzw. sagen, wie ich den absendernamen "powermail" da rausbekomme?

Schaut komisch aus, wenn auf der bestätigungsmail an den kunden als absender "powermail" steht!

Wie gesagt, seit dem update gestern!

vielen Dank
Mardl