Powermail 2 - Empfänger per Dropdown im Formular wählen

  • einpraegsam.net einpraegs...
    MacGyver
    1 x
    9340 Beiträge
    80 Hilfreiche Beiträge
    22. 10. 2012, 22:20

    [b]Idee[/b]
    Der Formular-Ausfüller soll in einer Auswahl den Empfänger des Formulares wählen können

    [b]Lösung[/b]
    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.

    [b]Umsetzung[/b]
    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:
    [img]http://easycaptures.com/fs/uploaded/696/2892996211.png[/img]

    Eine kurze Abfrage per TypoScript:

    1. lib.receiver = CONTENT
    2. lib.receiver {
    3. table = fe_users
    4. # Seite mit FE_Users
    5. pidInList = 20
    6. andWhere {
    7. # Powermail 2.0.x Feld UID (sichtbar bei Mouseover in Backend Listview)
    8. # data = GP:tx_powermail_pi1|field|74
    9.  
    10. # Powermail 2.1.x Feld Marker (sichtbar bei Feld - z.B. {receiver})
    11. data = GP:tx_powermail_pi1|field|receiver
    12.  
    13. wrap = fe_users.uid=|
    14. intval = 1
    15. }
    16. }
    17. renderObj = TEXT
    18. renderObj {
    19. field = email
    20. }
    21. }

    cObject ViewHelper als Empfänger eintragen:
    [img]http://easycaptures.com/fs/uploaded/696/9944886815.png[/img]

    [b]Hinweis[/b]
    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.

    in2code.de - Wir leben TYPO3
    - Möchtest du TYPO3 komplett verstehen? Eigene Erweiterungen erstellen? Bei uns gibt es auch Schulungen https://www.in2code.de/produkte/typo3-schulungen/
    - Die Arbeit mit TYPO3 macht dir Spaß? Du stehst auf Berge? Komm zu uns! https://www.in2code.de/agentur/karriere/


  • rebooo rebooo
    T3PO
    0 x
    8 Beiträge
    0 Hilfreiche Beiträge
    02. 12. 2014, 22:26

    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

    1. # Email anzeigen
    2. lib.showemail = TEXT
    3. lib.showemail < plugin.tx_email2powermail.showEmail
    4. # oder einfach so wie in email2powermail beschrieben machen
    5.  
    6. # E-Mail Adresse in leeres Empfängerfeld einfügen - im powermail Formular die E-Mail Adresse des Empfängers leer lassen
    7. plugin.tx_powermail.settings.setup {
    8. receiver.overwrite {
    9. email = TEXT
    10. email < plugin.tx_email2powermail.getEmail
    11. }
    12. }

    Ich wünsche allen noch einen schönen Abend.
    Viele Grüße,
    Jon

  • hexaman hexaman
    TYPO3-Anwärter
    0 x
    6 Beiträge
    0 Hilfreiche Beiträge
    23. 04. 2015, 17:04

    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

  • danton danton
    Jedi-Meister
    0 x
    298 Beiträge
    4 Hilfreiche Beiträge
    06. 10. 2015, 10:42

    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.
    [url]https://forum.typo3.org/index.php/t/207333/-typo3-german-powermail-2-dynamischer-empf-nger-je-nach-betreff[/url]
    [url]https://forge.typo3.org/issues/63497[/url]

    Im powermail Flexform des Plugins z.b. bei Receiver E-Mail muss die/der Variable/Feldnamen mit übergeben werden sonst kommt nichts an.

    1. {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.
    1. field = 0

    Komplett sieht das TS-Objekt folgendermaßen aus.

    1. lib.receiver = CONTENT
    2. lib.receiver {
    3. table = fe_users
    4. pidInList = {$styles.content.loginform.pid}
    5. andWhere.cObject = TEXT
    6. andWhere.cObject {
    7. field = 0
    8.  
    9. wrap = fe_users.uid=|
    10. }
    11. }
    12. renderObj = TEXT
    13. renderObj {
    14. field = email
    15. }
    16. }

    [b][u]Nachtrag:[/u][/b]
    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".

    1. Bitte auswählen:|
    2. Halbzeuge Rohmaterial|Halbzeuge Rohmaterial[5]

    TS-Objekt lib.receiver

    1. lib.receiver = CONTENT
    2. lib.receiver {
    3. table = fe_users
    4. # Konstante des FE-User Sysordners
    5. pidInList = {$styles.content.loginform.pid}
    6. andWhere.cObject = COA
    7. andWhere.cObject {
    8. wrap = fe_users.uid=|
    9. 10 = TEXT
    10. 10{
    11. # Übergebener Wert vom Feld/Variable "produktionsmaterial"
    12. field = 0
    13. listNum.splitChar =[
    14. listNum = last
    15. intval = 1
    16. }
    17. }
    18. }
    19. renderObj = TEXT
    20. renderObj {
    21. field = email
    22. }
    23. }

    Gruß Niels

    "Das Universum ist vollkommen. Es kann nicht verbessert werden. Wer es verändern will, verdirbt es. Wer es besitzen will, verliert es." - Laozi

  • Slicer12 Slicer12
    Jar Jar Binks
    0 x
    1 Beiträge
    0 Hilfreiche Beiträge
    13. 03. 2017, 14:21

    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

    Zitiert von: einpraegsam.net
    [b]Idee[/b]
    Der Formular-Ausfüller soll in einer Auswahl den Empfänger des Formulares wählen können

    [b]Lösung[/b]
    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.

    [b]Umsetzung[/b]
    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:
    [img]http://easycaptures.com/fs/uploaded/696/2892996211.png[/img]

    Eine kurze Abfrage per TypoScript:

    1. lib.receiver = CONTENT
    2. lib.receiver {
    3. table = fe_users
    4. # Seite mit FE_Users
    5. pidInList = 20
    6. andWhere {
    7. # Powermail 2.0.x Feld UID (sichtbar bei Mouseover in Backend Listview)
    8. # data = GP:tx_powermail_pi1|field|74
    9.  
    10. # Powermail 2.1.x Feld Marker (sichtbar bei Feld - z.B. {receiver})
    11. data = GP:tx_powermail_pi1|field|receiver
    12.  
    13. wrap = fe_users.uid=|
    14. intval = 1
    15. }
    16. }
    17. renderObj = TEXT
    18. renderObj {
    19. field = email
    20. }
    21. }

    cObject ViewHelper als Empfänger eintragen:
    [img]http://easycaptures.com/fs/uploaded/696/9944886815.png[/img]

    [b]Hinweis[/b]
    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.

  • Veloce Veloce
    R2-D2
    0 x
    99 Beiträge
    0 Hilfreiche Beiträge
    17. 01. 2018, 12:44

    Zitiert von: einpraegsam.net
    Hi,

    Hier mal ein Update für eine nette Variante mit [b]Powermail 2.1.x[/b]

    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:
    [img]https://s3.amazonaws.com/fvd-data/notes/262407/1411122534-NoDw6F/screen.png[/img]

    Anzeige der Empfänger auf der Bestätigungsseite:
    [img]https://s3.amazonaws.com/fvd-data/notes/262407/1411122606-dL36aT/screen.png[/img]

    ---

    Das Feld Receiver hat den Marker [b]{receiver}[/b] und bei "Create from TypoScript" [b]lib.receiver[/b]:
    [img]https://s3.amazonaws.com/fvd-data/notes/262407/1411122708-ftrCDR/screen.png[/img]

    Das TypoScript für die Anzeige der Benutzernamen und die Umwandlung von Benutzername zur E-Mail:

    1. # Auswahl der Empfänger
    2. lib.receiver = COA
    3. lib.receiver {
    4. 10 = TEXT
    5. 10.value = Bitte wählen|[\n]
    6.  
    7. 20 = CONTENT
    8. 20 {
    9. table = fe_users
    10. select.pidInList = 104
    11. renderObj = COA
    12. renderObj {
    13. 10 = TEXT
    14. 10.field = username
    15. 10.wrap = |[\n]
    16. }
    17. }
    18. }
    19.  
    20. # Email von Benutzername für Versand
    21. lib.emailFromUsername = CONTENT
    22. lib.emailFromUsername {
    23. table = fe_users
    24. pidInList = 104
    25. andWhere {
    26. field = 0
    27. wrap = username="|"
    28. }
    29. }
    30. renderObj = TEXT
    31. renderObj {
    32. field = email
    33. }
    34. }

    Im Feld Empfänger greift Powermail auf lib.emailFromUsername zu und übergibt den Wert von {receiver}:
    [img]https://s3.amazonaws.com/fvd-data/notes/262407/1411123269-VcDOUT/screen.png[/img]

    Hier der Text zum Kopieren:

    1. {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