Idee
Der Formular-Ausfüller soll in einer Auswahl den Empfänger des Formulares wählen können
Lösung
Im Empfängerfeld ein cObject Viewhelper auswählen um sein TypoScript einfließen lassen zu können. Per TypoScript dann an Hand der übergebenen fe_users uid die passende E-Mail auslesen und zurückgeben.
Umsetzung
Ein paar fe_user anlegen mit passenden E-Mail-Adressen und die UID's dieser merken.
Dementsprechend kann man dann ein Selector in Powermail einbauen:
Bild: easycaptures.com/…/2892996211.png
Eine kurze Abfrage per TypoScript:
lib.receiver = CONTENT
lib.receiver {
table = fe_users
select {
# Seite mit FE_Users
pidInList = 20
andWhere {
# Powermail 2.0.x Feld UID (sichtbar bei Mouseover in Backend Listview)
# data = GP:tx_powermail_pi1|field|74
# Powermail 2.1.x Feld Marker (sichtbar bei Feld - z.B. {receiver})
data = GP:tx_powermail_pi1|field|receiver
wrap = fe_users.uid=|
intval = 1
}
}
renderObj = TEXT
renderObj {
field = email
}
}
cObject ViewHelper als Empfänger eintragen:
Bild: easycaptures.com/…/9944886815.png
Hinweis
Natürlich wäre es technisch möglich, direkt die E-Mails im Select anzugeben. Dann könnte aber jeder Bot die E-Mails abgreifen oder den Empfänger beliebig beeinflussen.
Danke @einpraegsam für den Denkanstoß!
Bis auf das TypoScript habe alles identisch eingerichtet.
Ich habe es über einen Typoscript CASE gelöst, da ich keine fe_user habe...
lib.receiver = CASE
lib.receiver {
#
key.data = GP:tx_powermail_pi1|field|14
key.intval = 1
# Res 1
1 = TEXT
1.value = mail1@domain.de
# Res 2
2 = TEXT
2.value = mail2@domain.de
# Res 3
3 = TEXT
3.value = mail3@domain.de
# Res 4
4 = TEXT
4.value = mail4@domain.de
default = TEXT
default.value = mail@domain.de
}
@einpraegsam.net
Dein Beispiel ist für mich sehr interessant!
Aufgrund meiner (für mich) sehr komplexen Formulare habe ich mich bisher gescheut, Powermail 2.x einzusetzen.
Für unser Formular (unter Powermail 1.x) habe ich zur Auswahl verschiedener Adressaten bisher unten stehendes TS eingesetzt, welches ich nach den Hinweisen aus dem Manual entwickelt habe.
Ist dieses auch unter Powermail 2.x noch einsetzbar oder funktioniert das dann nicht mehr.
Bin leider nicht so bewandert... o.O :
Auf dem ersten Blick sieht Dein Beispiel ja ähnlich aus.
Was ist dahingehend zukünftig unter Powermail 2.x zu beachten. Welche Unterschiede gibt es?
### verschiedene Adressaten im Formular ####
plugin.tx_powermail_pi1.email.recipient_mail {
email_query = TEXT
email_query.value = SELECT email,name FROM fe_users WHERE uid = ###UID55### AND disable = 0 AND deleted = 0
}
### Bestätigungsseite; verschiedene Adressaten ####
plugin.tx_powermail_pi1.mode.confirmation {
uid55 = TEXT
uid55 {
cObject = CONTENT
cObject {
table = fe_users
select.andWhere.cObject = COA
select.andWhere.cObject {
5 = TEXT
5 {
value = uid =
}
10 = TEXT
10 {
data = TSFE:fe_user|sesData|powermail_10|uid55
intval = 1
}
}
select.pidInList = 55
renderObj = TEXT
renderObj.field = name
}
}
}
### Dankseite; verschiedene Adressaten ####
plugin.tx_powermail_pi1.mode.thx {
uid55 = TEXT
uid55 {
cObject = CONTENT
cObject {
table = fe_users
select.andWhere.cObject = COA
select.andWhere.cObject {
5 = TEXT
5 {
value = uid =
}
10 = TEXT
10 {
data = TSFE:fe_user|sesData|powermail_10|uid55
intval = 1
}
}
select.pidInList = 55
renderObj = TEXT
renderObj.field = name
}
}
}
### Mail an ausgwählten Empfänger; verschiedene Adressaten ####
plugin.tx_powermail_pi1.mode.recipient_mail {
uid55 = TEXT
uid55 {
cObject = CONTENT
cObject {
table = fe_users
select.andWhere.cObject = COA
select.andWhere.cObject {
5 = TEXT
5 {
value = uid =
}
10 = TEXT
10 {
data = TSFE:fe_user|sesData|powermail_10|uid55
intval = 1
}
}
select.pidInList = 55
renderObj = TEXT
renderObj.field = name
}
}
}
### Mail an Absender; verschiedene Adressaten ####
plugin.tx_powermail_pi1.mode.sender_mail {
uid55 = TEXT
uid55 {
cObject = CONTENT
cObject {
table = fe_users
select.andWhere.cObject = COA
select.andWhere.cObject {
5 = TEXT
5 {
value = uid =
}
10 = TEXT
10 {
data = TSFE:fe_user|sesData|powermail_10|uid55
intval = 1
}
}
select.pidInList = 55
renderObj = TEXT
renderObj.field = name
}
}
}
################################
### Testfeld 01 -Telefonnummer ausgeben- ####
plugin.tx_powermail_pi1.mode.confirmation {
uid51 = TEXT
uid51 {
cObject = CONTENT
cObject {
table = fe_users
select.andWhere.cObject = COA
select.andWhere.cObject {
5 = TEXT
5 {
value = uid =
}
10 = TEXT
10 {
data = TSFE:fe_user|sesData|powermail_10|uid55
intval = 1
}
}
select.pidInList = 55
renderObj = TEXT
renderObj.field = telephone
}
}
}
################################
################################
### Testfeld 02 -Aktenzeichen generieren- ####
uid55 = TEXT
uid55 {
cObject = CONTENT
cObject {
table = fe_users
select.andWhere.cObject = COA
select.andWhere.cObject {
5 = TEXT
5 {
value = uid =
}
10 = TEXT
10 {
data = TSFE:fe_user|sesData|powermail_10|uid55
intval = 1
}
}
select.pidInList = 55
renderObj = TEXT
renderObj.field = title
renderObj.dataWrap = Aktenzeichen|-{date:YmdHis}
}
}
################################
Das musst du leider komplett ändern
Danke für Deine Antwort. Ich habe es befürchtet. o.O
Allein für dieses Formular, samt Script, Conditions, Fehler googlen, Extensions fixen usw. habe ich schon Ewigkeiten, bestimmt aber Wochen benötigt. Ich hoffe, diesmal bekomme ich es schneller hin.
Sehr spannend für mich. Aber eigentlich müsste ich doch im Script nur mein
cObject = CONTENT
cObject {
usw. ...
}
durch Deinen Code
lib.receiver = CONTENT
lib.receiver {
usw. ...
}
ersetzen (?).
Oder bin ich vollkommen auf dem Holzweg?
hallo die Herren... Ich verzweifele:
Habe es mit beiden Methoden (jank und einprägsam) versucht.
Das Schweineformular schreibt mir lediglich brav 1 oder 2 oder 3 🙂
Heißt - die fe_user werden nicht ausgelesen... Wenn ich den default-value nicht auskommentiere
werden die mails jedoch an diese (not-Email) geschickt.
Hat jemand eine Idee? Wäre sehr dankbar, Christoph
PS:
Typo3 6.1.10
Powermail 2.1.1
Powermail Conditions 2.1.0 (hab ich aber auch schon vorsichthalber mal deaktiviert)
Typoscript im +ext der Seite mit dem Formular
Hi,
Hier mal ein Update für eine nette Variante mit Powermail 2.1.x
Grundlage ist, dass FE Users in der Datenbank mit eindeutigen Benutzernamen existieren.
Auf der Seite 104 habe ich meine FE-Users angelegt. Gefüllt sind bei mir die Felder Username und E-Mail (dazu natürlich noch Passwort und Gruppe).
In einem Auswahlfeld lasse ich die Benutzernamen anzeigen (Abfrage über TypoScript). Dieses nehmen wir als Grundlage für eine Datenbankabfrage "getEmailFromUsername" (auch über TypoScript).
Auswahl der Empfänger im Formular:
Bild: s3.amazonaws.com/…/screen.png
Anzeige der Empfänger auf der Bestätigungsseite:
Bild: s3.amazonaws.com/…/screen.png
---
Das Feld Receiver hat den Marker {receiver} und bei "Create from TypoScript" lib.receiver:
Bild: s3.amazonaws.com/…/screen.png
Das TypoScript für die Anzeige der Benutzernamen und die Umwandlung von Benutzername zur E-Mail:
# Auswahl der Empfänger
lib.receiver = COA
lib.receiver {
10 = TEXT
10.value = Bitte wählen|[\n]
20 = CONTENT
20 {
table = fe_users
select.pidInList = 104
renderObj = COA
renderObj {
10 = TEXT
10.field = username
10.wrap = |[\n]
}
}
}
# Email von Benutzername für Versand
lib.emailFromUsername = CONTENT
lib.emailFromUsername {
table = fe_users
select {
pidInList = 104
andWhere {
field = 0
wrap = username="|"
htmlSpecialChars = 1
}
}
renderObj = TEXT
renderObj {
field = email
}
}
Im Feld Empfänger greift Powermail auf lib.emailFromUsername zu und übergibt den Wert von {receiver}:
Bild: s3.amazonaws.com/…/screen.png
Hier der Text zum Kopieren:
{f:cObject(typoscriptObjectPath:'lib.emailFromUsername',data:receiver)}
Viele Grüße aus Rosenheim
Hallo zusammen,
zu dem Update von einpraegsam.net hätte ich eine Frage. Wie könnte es man anstellen um auf diese Weise die Extension email2powermail 0.2.2 mit Powermail 2.1 wieder zum laufen zu bringen? Ich versuche nun schon seit 2 Tagen dieses für mich anscheinend große Problem zu lösen.
Zur Vorgeschichte: Ich habe eine Seite in der extrem viele E-Mail Links im Content vorhanden sind (ca.3000) die alle auf ein Powermail-Kontakt-Formular verlinkt werden sollen. In Typo3 4.5 und 4.7 bis Powermail 1.6.11 ist alles kein Problem und funktioniert super (sind auch super Extensions!).
Jedoch steht jetzt das Update auf 6.2 bevor. Habe mir dazu eine Testumgebung eingerichtet, email2powermail installiert und in den Dateien class.tx_email2powermail_cache, -fe, -powermailreceiver und -replace in der Zeile 25
"require_once(PATH_tslib . 'class.tslib_pibase.php');"
durch
"if (!class_exists('tslib_pibase')) require_once(PATH_tslib . 'class.tslib_pibase.php');"
ersetzt.
Soweit alles ok. Nur bekomme ich es einfach nicht auf die Reihe dass die E-Mail Adressen wie früher in die Empfängermail kommt. Habs nach dem obigen Beispiel vom Update von einprägsam.net und auf viele andere Arten versucht, aber anscheinend versteh ich da irgend etwas nicht richtig.
Die E-Mail Adressen werden auch in die DB tx_email2powermail_emailcache geschrieben, ich kann sie auch anzeigen aber ich krieg sie einfach nicht in die Empfänger E-Mail.
Vielleicht könnte mir jemand in dieser Sache einen Schubbser in die richtige Richtung geben, denn durch die vielen Versuche (an denen ich klaglos gescheitert bin) gehen mir langsam die Ideen aus.
Viele Grüße
So weit ich es in Erinnerung habe, nutzt email2powermail einen Hook in der alten powermail 1.x um beim Absenden die E-Mail entsprechend zu ändern.
Im Prinzip müsste man email2powermail ein Update spendieren.
Hallo,
vielen Dank erst mal für die rasche Antwort.
Ja, das wird´s wahrscheinlich sein. Schade, daß das nicht klappt - wäre ein super Teil. Aber bis das mal kommt weiß ja niemand. Ich hab ja auch versucht auf die DB tx_email2powermail_emailcache zuzugreifen und die E-Mails die dort auch drinnen sind auszulesen - und dann mit z.B. {f:cObject(typoscriptObjectPath:'lib.receiver')} ins Empfängerfeld von Powermail reinzukriegen aber das klappt auch irgendwie nicht.
Naja, brauch ich halt noch ne Weile - vielleicht schaff ichs ja... 🙂
Aber vielleicht hat jemand doch noch eine Idee - bin für alles dankbar.
Viele Grüße
Hallo Alex,
ich darf doch Alex sagen?
Ich glaube das Update für email2powermail ist doch nicht so dringend - zumindest für mich momentan nicht soweit ich das abschätzen kann - denn ich habe das Problem nun doch noch lösen können 🙂.
Ausschlaggebend war Dein Beitrag vom "26. 11. 2014, 00:04 - Lösung" und zwar Punkt 2 - ein addQueryString="1" mitgeben.
Habe das in der Form.html und Confirmation.html gemacht und siehe das - es läuft wie am Schnürchen... 🙂
Für alle die das vielleicht auch benötigen:
TYPO3 6.2.4
powermail 2.1.9
email2powermail 0.2.2
# Email anzeigen
lib.showemail = TEXT
lib.showemail < plugin.tx_email2powermail.showEmail
# oder einfach so wie in email2powermail beschrieben machen
# E-Mail Adresse in leeres Empfängerfeld einfügen - im powermail Formular die E-Mail Adresse des Empfängers leer lassen
plugin.tx_powermail.settings.setup {
receiver.overwrite {
email = TEXT
email < plugin.tx_email2powermail.getEmail
}
}
Ich wünsche allen noch einen schönen Abend.
Viele Grüße,
Jon
Hallo zusammen,
ich bin gerade über google auf diesen Thread gestoßen.
Die Schilderung von einprägsam finde ich recht gut, ich bekomme es aber nicht zu laufen.
Die PidinList 104 , was ist das für eine Seite ? Das muss doch ein Systemordner sein der die fe_user beinhaltet, richtig ? Auf einer Seite kann ich ja keine Benutzer anlegen.
Ich habe also hier eine Seite die das Powermail (2.3.1) Formular enthält und einen Systemordner mit einer Benutzergruppe und darin enthaltenen Usern.
Aber irgendwie bekomme ich das so nicht zum laufen.
Danke und Grüße
Patrick
Hi@all
Bei mir hat das bei powermail Version 2.6.3 nicht funktioniert.
Folgende 2 Threads haben mich aber auf die richtige Lösung gebracht.
https://forum.typo3.org/index.php/t/207333/-typo3-german-powermail-2-dynamischer-empf-nger-je-nach-betreff
https://forge.typo3.org/issues/63497
Im powermail Flexform des Plugins z.b. bei Receiver E-Mail muss die/der Variable/Feldnamen mit übergeben werden sonst kommt nichts an.
{produktionsmaterial -> f:cObject(typoscriptObjectPath:'lib.receiver')}
D.h. produktionsmaterial entspricht der/dem Variable/Feldnamen.
Wichtig ist noch das man im TS-Objekt lib.receiver es entsprechend anspricht.
field = 0
Komplett sieht das TS-Objekt folgendermaßen aus.
lib.receiver = CONTENT
lib.receiver {
table = fe_users
select {
pidInList = {$styles.content.loginform.pid}
andWhere.cObject = TEXT
andWhere.cObject {
field = 0
wrap = fe_users.uid=|
}
}
renderObj = TEXT
renderObj {
field = email
}
}
Nachtrag:
Sollte jemand anstatt der UID in den übergebenen Daten des Feldes den Title haben wollen habe ich das folgendermaßen gelöst.
Im Select-Feld in meinem Fall "Produktions- und Nichtproduktionsmaterial" Variable "produktionsmaterial".
Bitte auswählen:|
Halbzeuge Rohmaterial|Halbzeuge Rohmaterial[5]
TS-Objekt lib.receiver
lib.receiver = CONTENT
lib.receiver {
table = fe_users
select {
# Konstante des FE-User Sysordners
pidInList = {$styles.content.loginform.pid}
andWhere.cObject = COA
andWhere.cObject {
wrap = fe_users.uid=|
10 = TEXT
10{
# Übergebener Wert vom Feld/Variable "produktionsmaterial"
field = 0
listNum.splitChar =[
listNum = last
intval = 1
}
}
}
renderObj = TEXT
renderObj {
field = email
}
}
Gruß Niels
Hi Niels,
das Script hat mir super geholfen, allerdings nur auf kleineren Versionen von Powermail, nicht auf der neuesten.
Die letzte Version die Funktioniert wr bei mir die 3.1.1
Kannst Du ersehen warum das bei den höheren, neueren Versionen nicht funktioniert?
Es gibt in der Mail die versendet wird nicht den Nutzer aus sondern im Emailfeld nur den Code:
{f:cObject(typoscriptObjectPath:'lib.emailFromUsername',data:receiver)}
Grüße
Patrick
einpraegsam.net schriebIdee
Der Formular-Ausfüller soll in einer Auswahl den Empfänger des Formulares wählen können
Lösung
Im Empfängerfeld ein cObject Viewhelper auswählen um sein TypoScript einfließen lassen zu können. Per TypoScript dann an Hand der übergebenen fe_users uid die passende E-Mail auslesen und zurückgeben.
Umsetzung
Ein paar fe_user anlegen mit passenden E-Mail-Adressen und die UID's dieser merken.
Dementsprechend kann man dann ein Selector in Powermail einbauen:
Bild: easycaptures.com/…/2892996211.png
Eine kurze Abfrage per TypoScript:
lib.receiver = CONTENT
lib.receiver {
table = fe_users
select {
# Seite mit FE_Users
pidInList = 20
andWhere {
# Powermail 2.0.x Feld UID (sichtbar bei Mouseover in Backend Listview)
# data = GP:tx_powermail_pi1|field|74
# Powermail 2.1.x Feld Marker (sichtbar bei Feld - z.B. {receiver})
data = GP:tx_powermail_pi1|field|receiver
wrap = fe_users.uid=|
intval = 1
}
}
renderObj = TEXT
renderObj {
field = email
}
}
cObject ViewHelper als Empfänger eintragen:
Bild: easycaptures.com/…/9944886815.png
Hinweis
Natürlich wäre es technisch möglich, direkt die E-Mails im Select anzugeben. Dann könnte aber jeder Bot die E-Mails abgreifen oder den Empfänger beliebig beeinflussen.
einpraegsam.net schriebHi,
Hier mal ein Update für eine nette Variante mit Powermail 2.1.x
Grundlage ist, dass FE Users in der Datenbank mit eindeutigen Benutzernamen existieren.
Auf der Seite 104 habe ich meine FE-Users angelegt. Gefüllt sind bei mir die Felder Username und E-Mail (dazu natürlich noch Passwort und Gruppe).
In einem Auswahlfeld lasse ich die Benutzernamen anzeigen (Abfrage über TypoScript). Dieses nehmen wir als Grundlage für eine Datenbankabfrage "getEmailFromUsername" (auch über TypoScript).
Auswahl der Empfänger im Formular:
Bild: s3.amazonaws.com/…/screen.png
Anzeige der Empfänger auf der Bestätigungsseite:
Bild: s3.amazonaws.com/…/screen.png
---
Das Feld Receiver hat den Marker {receiver} und bei "Create from TypoScript" lib.receiver:
Bild: s3.amazonaws.com/…/screen.png
Das TypoScript für die Anzeige der Benutzernamen und die Umwandlung von Benutzername zur E-Mail:
# Auswahl der Empfänger
lib.receiver = COA
lib.receiver {
10 = TEXT
10.value = Bitte wählen|[\n]
20 = CONTENT
20 {
table = fe_users
select.pidInList = 104
renderObj = COA
renderObj {
10 = TEXT
10.field = username
10.wrap = |[\n]
}
}
}
# Email von Benutzername für Versand
lib.emailFromUsername = CONTENT
lib.emailFromUsername {
table = fe_users
select {
pidInList = 104
andWhere {
field = 0
wrap = username="|"
htmlSpecialChars = 1
}
}
renderObj = TEXT
renderObj {
field = email
}
}
Im Feld Empfänger greift Powermail auf lib.emailFromUsername zu und übergibt den Wert von {receiver}:
Bild: s3.amazonaws.com/…/screen.png
Hier der Text zum Kopieren:
{f:cObject(typoscriptObjectPath:'lib.emailFromUsername',data:receiver)}
Viele Grüße aus Rosenheim
Hallo zusammen,
leider funktioniert diese Variante mit der Version 2.4.x nicht mehr. Ich habe die Anleitung von Einpraegsam erfolgreich in einer Powermailversion 2.1.x erfolgreich integriert und möchte nun das selbe in der neueren Version machen. Kann mir jemand einen Tipp geben was ich ändern muß?
Vielen Dank