Catalog Power Mailer: Formular in catalog_full mit indiv. Empfänger

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • tornado

    #31
    catalog_power_mailer - Korrektur

    hallo,

    jetzt eine korrekte Version.
    Klicke auf die Grafik für eine vergrößerte Ansicht

Name: Katalog.png
Ansichten: 2
Größe: 16,4 KB
ID: 919543 Klicke auf die Grafik für eine vergrößerte Ansicht

Name: Formular.png
Ansichten: 1
Größe: 24,4 KB
ID: 919544 Klicke auf die Grafik für eine vergrößerte Ansicht

Name: Formular Module.png
Ansichten: 2
Größe: 15,0 KB
ID: 919545
    Die wichtigste Zeile 37 bleibt ohne Änderung, wenn wie Nina vorgeschlagen hat,
    den formID Bezeichnung "catalogform" bleibt.
    Sonst php Interpreter springt am Ende und keine Fehlermeldung und kein Email bei Empfänger.
    Mein Vorschlag ist nichts anderes als diese Abfrage immer auf "true" zu setzen.
    Zeile 48 Datensatz ID des Formulars.

    Die Datenspeicherung mit der efg Erweiterung funktioniert auch, wenn man die Option Daten im Modul "Formular-Daten speichern" benutzt http://de.contaowiki.org/EFG#Speiche...ackend-Modulen
    Bleibt nur: zusätzlich text zugefügen
    Info darüber noch nicht gefunden aber müsste es so korrekt sein.

    Lokal mit xampp oder anderem kann man auch dieses Catalog-Formular gut testen ohne Email Verbindung zu haben.
    Wenn alles korrekt eingestellt ist, findet man im system/logs eine Datei email.log,
    wo ein Eintrag "E-mail address rejected:test@test.de" steht,
    dagegen in online Betrieb:
    "An e-mail has been sent to:test@test.de"

    Leider ohne PHP Kenntnisse kommt so was. Aber habe ich auch etwas dazugelernt.

    Viele Grüße

    joe

    Kommentar

    • Don
      Contao-Nutzer
      • 03.10.2010
      • 16

      #32
      Fatal error: Uncaught exception... - Alle Einstellungen geprüft

      Hey zusammen,

      vielen Dank vorab für die sinnvolle Erweiterung. Für meinen Anwendungsfall exakt das was ich brauche.
      Nun habe ich leider ein Problem mit dem Versenden des Formulars, egal wie ich es anstelle ich bekomme immer folgenden Fehler:

      Code:
      Fatal error: Uncaught exception Swift_RfcComplianceException with message Address in mailbox given [] does not comply with RFC 2822, 3.6.2. thrown in /xxxx/html/plugins/swiftmailer/classes/Swift/Mime/Headers/MailboxHeader.php on line 308
      E-Mail Adressen in Einstellungen und Seitenbaum überprüft, ersetzt - nichts tut sich
      Server-Version getestet (mediatemple) - nichts tut sich
      Client-Version getestet (1und1) - nichts tut sich
      Wende das Formular in einer sehr umgebauten Version der Catalog-List an, dachte daran liegts, alles Umgebaut auf Catalog-Reader - nichts tut sich

      Hier noch meine Version der CatalogPowerMailer.php

      Form ID: catalogform
      Absender: Sender
      Fields: Name, Phone, Sender, Message
      Table: cat_countries

      PHP-Code:
      class CatalogPowerMailer extends Controller
      {
          public function sendTheMail($arrPost, $arrForm, $arrFiles)
          { 
              if ($arrForm['formID'] == 'catalogform') // fill in your Form ID (form setting) -> NOT form CSS-ID! 
              {         
                  $objMail = new Email();
                  $this->Import('Database');
                  $this->Import('Input');
      
             /**
              * Use form title as mail subject
              */            
                  $objDbForm = $this->Database->prepare('SELECT * FROM tl_form WHERE id=?')
                  ->limit(1)
                  ->execute('11'); // fill in the record ID of your form
                  $objMail->subject = $objDbForm->title;
      
             /**
              * Choose which field of the form should be used as mail sender
              */    
                  $objMail->from = $arrPost['Sender']; // form field 'Absender'
      
        
             /**
              * Choose which fields of the form should be sent as mail text
              * Join fields with: . "\n" .         
              */
            $objMail->text = $arrPost['Name'] . "\n" . // form field 'Name' 
                             $arrPost['Phone'] . "\n" . // form field 'Telefon'  
                             $arrPost['Sender'] . "\n" . // form field 'Absender' 
                             $arrPost['Message']; // form field 'Mitteilung'     
                  
             /**
              * Use email-field of the active catalog item as mail recipient 
              * Send mail as soon as it hits the sendTo() command
              */            
                  $objDbCatalog = $this->Database->prepare('SELECT * FROM cat_countries WHERE alias=?') // fill in catalog-table name
                  ->limit(1)
                  ->execute($this->Input->get('items'));
                  
            $objMail->sendTo($objDbCatalog->email);
                                                     
              }
          }
      } 
      
      So, irgendjemand eine Idee woran es liegt? Tips? Wäre um alles dankbar!
      Wünsche euch ein schönes Wochenende

      Kommentar

      • Don
        Contao-Nutzer
        • 03.10.2010
        • 16

        #33
        Fatal Error: Wir kommen der Sache näher

        Habe gerade nochmals alles gecheckt, leider immer noch nicht erfolgreich, der Fehler scheint aber eingegrenzt.
        Es scheint hier ein Problem zu geben:

        PHP-Code:
        /**
                * Use email-field of the active catalog item as mail recipient 
                * Send mail as soon as it hits the sendTo() command
                */            
                    $objDbCatalog = $this->Database->prepare('SELECT * FROM cat_countries WHERE alias=?') // fill in catalog-table name
                    ->limit(1)
                    ->execute($this->Input->get('items'));
                    
              $objMail->sendTo($objDbCatalog->email); 
        
        Ersetze ich die letzte Zeile durch:

        PHP-Code:
         $objMail->sendTo('don@fsb-welfenburg.de'); 
        
        Kommt die E-Mail mit allen Werten durch. Jedoch ist das ja nicht das Ziel der Sache.
        In meiner Datenbank habe ich auch schon alles gecheckt, name stimmt, spaltenname auch, e-mails sind auch drin (zwar nicht zu jedem eintrag, aber zu denen die getestet werden...)

        Wäre wirklich dankbar wenn hier jemand einen Lösungsversuch hätte.

        Dank euch.

        Kommentar

        • Don
          Contao-Nutzer
          • 03.10.2010
          • 16

          #34
          Problem gelöst.

          Hallo zusammen,

          habe mein Problem nun lösen können, hatte im Prinzip nichts mit dem PowerMailer an sich zu tun.
          Die Auswahl der passenden E-Mail über den alias war das Problem. Für mein Zweck ist die Ansteuerung über die ID sinnvoller.

          Das im Code geändert und alles rennt einwandfrei!

          Beste Grüße!

          Kommentar

          • netnite
            Contao-Fan
            • 21.06.2009
            • 422

            #35
            Ich hab die Funktionalität in einen neuen Katalog eingebaut und Sie funktioniert auch.

            Beim Abschicken wird man leider nicht auf die angelegte "Vielen Dank für Ihre bla bla bla" -Seite weitergeleitet, sondern es wird eine weiße Seite angezeigt auf der nur die Emailadresse des Empfängers (also des Catalogeintrages) erscheint.

            Das Formular wird aber versendet.

            Kann das jemand nachvollziehen?
            Zuletzt geändert von netnite; 08.03.2013, 11:11.

            Kommentar

            • netnite
              Contao-Fan
              • 21.06.2009
              • 422

              #36
              Hab selber eine Lösung gebaut.

              Ich habe in der CatalogPowerMailer.php

              statt
              Code:
              echo $objDbCatalog->email;
              Code:
              header("Location: {{link_url::782}} ");
              eingefügt und schon leitet er auf die Seite weiter, nachdem er das Formular abgeschickt hat.

              Kommentar

              • conny79
                Gesperrt
                • 01.12.2010
                • 7

                #37
                Inhalt eines Catalog-Felds in Betreffzeile anzeigen

                Auch ich bin von der Erweiterung sehr begeistert und habe dank der vielen Tipps hier alles soweit zum Laufen gebracht. Allerdings komme ich bei folgendem Problem nicht mehr weiter, weil meine php-Kenntnisse einfach zu schlecht sind.
                Mein Kunde hätte gerne noch, dass im Betreff der Email die jeweilige Artikelnummer (kann über ein Catalogfeld eingegeben werden) mitgesendet wird.
                Kann mir jemand helfen? Ich weiß nämlich echt nicht, was ich da in die CatalogPowerMailer.php schreiben soll.

                Kommentar

                • matuweb
                  Alter Contao-Hase
                  • 22.06.2009
                  • 1342

                  #38
                  Hallo,

                  wie kann ich in die verschickte Email noch ein Impressum/Link zum Eintrag einbauen?
                  Kann man auch eine Kopie der Anfrage an sich schicken?

                  Grüße
                  Matu
                  Viele Grüße aus Köln
                  Matu

                  Kommentar

                  • matuweb
                    Alter Contao-Hase
                    • 22.06.2009
                    • 1342

                    #39
                    Oder kann man ein Email-Template vorbereiten, also mit Logo und Impressum und dort nur noch die Werte eintragen?
                    Habt ihr einen Tip für mich?

                    Grüße
                    Matu
                    Zuletzt geändert von matuweb; 04.06.2013, 22:31.
                    Viele Grüße aus Köln
                    Matu

                    Kommentar

                    • Tim G
                      Contao-Urgestein
                      • 13.02.2010
                      • 2212

                      #40
                      Ich würde immer den EFG nutzen, dort kann man bequem HTML E-Mails nach Vorlage schicken (damit erledigen sich die Fragen wie man Sachen ergänzt).
                      Mit dem processEfgFormdata HOOK baut man sich dann auf dem gleichen Weg die E-Mail zurecht: Empfänger-Adressen aus Katalog holen, ggf. Bestätigungsmail senden etc. Geht alles darüber und man muss nicht eine komplett neue Mail bauen.
                      http://www.tim-gatzky.de ˙ auch schon wieder 2 Jahre alt - wie die Zeit vergeht... muss mal umbauen.

                      Kommentar

                      • matuweb
                        Alter Contao-Hase
                        • 22.06.2009
                        • 1342

                        #41
                        Bei mir ist jetzt alles top, bis auf die Mail an den Anbieter.

                        Hier der Code aus der Datei CatalogPowerMailer.php :

                        PHP-Code:
                        <?php if (!defined('TL_ROOT')) die('You cannot access this file directly!');
                        
                        /**
                         * Contao Open Source CMS
                         * Copyright (C) 2005-2011 Leo Feyer
                         *
                         * Formerly known as TYPOlight Open Source CMS.
                         *
                         * This program is free software: you can redistribute it and/or
                         * modify it under the terms of the GNU Lesser General Public
                         * License as published by the Free Software Foundation, either
                         * version 3 of the License, or (at your option) any later version.
                         * 
                         * This program is distributed in the hope that it will be useful,
                         * but WITHOUT ANY WARRANTY; without even the implied warranty of
                         * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
                         * Lesser General Public License for more details.
                         * 
                         * You should have received a copy of the GNU Lesser General Public
                         * License along with this program. If not, please visit the Free
                         * Software Foundation website at <http://www.gnu.org/licenses/>.
                         *
                         * PHP version 5
                         * @copyright  www.ena-webstudio.com 2011
                         * @author     Nina Gerling <gerling@ena-webstudio.com>
                         * @package    catalog_power_mailer
                         * @license    LGPL
                         * @version    $Id: $
                         * @filesource
                         */
                        
                        
                        class CatalogPowerMailer extends Controller
                        {
                            public function sendTheMail($arrPost, $arrForm, $arrFiles)
                            { 
                                if ($arrForm['formID'] == 'catalogform') // fill in your Form ID (form setting) -> NOT form CSS-ID! 
                                {         
                                    $objMail = new Email();
                                    $this->Import('Database');
                                    $this->Import('Input');
                        
                               /**
                                * Use form title as mail subject
                                */            
                                    $objDbForm = $this->Database->prepare('SELECT * FROM tl_form WHERE id=?')
                                    ->limit(1)
                                    ->execute('18'); // fill in the record ID of your form
                                    $objMail->subject = $objDbForm->title;
                        
                               /**
                                * Choose which field of the form should be used as mail sender
                                */    
                                    $objMail->from = $arrPost['absender']; // form field 'Absender'
                        
                          
                               /**
                                * Choose which fields of the form should be sent as mail text
                                * Join fields with: . "\n" .         
                                */
                              $objMail->text = 
                                                  $arrPost['einleitung'] . "\n" . // form field 'einleitung' 
                                                 $arrPost['name'] . "\n" . // form field 'Name' 
                                               $arrPost['telefon'] . "\n" . // form field 'Telefon'  
                                               $arrPost['absender'] . "\n" . // form field 'Absender' 
                                               $arrPost['anzeigentitel'] . "\n" . // form field 'Absender' 
                                               $arrPost['nachricht']. "\n" . // form field 'Mitteilung'   
                                               $arrPost['link']. "\n" . // form field 'Link'
                                               $arrPost['abschluss'];  // form field 'abschluss' 
                                    
                               /**
                                * Use email-field of the active catalog item as mail recipient 
                                * Send mail as soon as it hits the sendTo() command
                                */            
                                    $objDbCatalog = $this->Database->prepare('SELECT * FROM marktplatz WHERE alias=?') // fill in catalog-table name
                                    ->limit(1)
                                    ->execute($this->Input->get('items'));
                                    
                              $objMail->sendTo($objDbCatalog->email);
                                                                       
                                }
                            }
                        }
                        
                        ?>
                        Was muss ich jetzt wo ergänzen, dass ich eine Einleitung (Lieber Nutzer, sie haben eine neue Anfrage auf...) und ein Abschlusssatz + Impressum zu jeder Mail hinzukommt?

                        Danke

                        Grüße
                        Matu
                        Viele Grüße aus Köln
                        Matu

                        Kommentar

                        Lädt...