kozi / contao-recipientselect

1 stars 1 forks source link

Kein Mailversand in Contao 4.4.5 #1

Closed LinkingYou closed 6 years ago

LinkingYou commented 7 years ago

Hi,

ich habe die Erweiterung contao-recipientselect (1.0.0) in Contao 4.4.5 getestet.

Die Backend-Integration sieht gut aus. Aber der Hook beim Mailversand funktioniert leider nicht :-(

In der entsprechenden Funktion prepareRecipients wird scheinbar das $objForm anders erwartet, als Contao es beim Aufruf liefert:

RecipientManager.php:

public function prepareRecipients(&$arrSubmitted, $arrLabels, $objForm) {

    $objFormField = \FormFieldModel::findOneBy(
        array('pid = ?', 'type = ?'),
        array($objForm->id, 'recipientmenu')
    );

Der Debugger zeigt direkt nach diesen Zeile folgenden Inhalt für $objForm.

bildschirmfoto 2017-09-22 um 10 51 30

Wenn ich noch etwas zum Debugging beitragen kann, bitte melden.

Gruß Franky

jammon88 commented 7 years ago

Habe das selbe Problem. Funktioniert mit Contao 4.4.5 und auch mit Contao 4.4.6 leider nicht.

kozi commented 7 years ago

The merge request fixed the bug in contao4 but does not work in contao3 so i added a version switch. Please test with version 1.0.1 and add a reply here, thanks!

LinkingYou commented 7 years ago

Der Versand der Mail funktioniert nun wie gewünscht an die definierten Empfänger.

Leider ist die Mail aber leer :-(

Ich hab dann mal in der processFormData im Contao-Core geschaut, was dort passiert: Die Nachrichte wir dort komplett richtig zusammegebaut (inkl. aller Eingaben) und dort in einer Variable $message gehalten. In Zeile 379 steht dann folgendes:

            // Get subject and message
            if ($this->format == 'email')
            {
                $message = $arrSubmitted['message'];
                $email->subject = $arrSubmitted['subject'];
            }

Und das verstehe ich nicht. Zumal in der contao-recipientselect Erweiterung in der Methode prepareRecipients ganz am Ende explizit steht:

$objForm->format = 'email';

Tauscht man diesen Werte gegen was ungültig aus (z.B. 'test'), dann wird die Nachricht korrekt verwendet.

kozi commented 7 years ago

Missing call by reference for $objForm

Try: https://github.com/kozi/contao-recipientselect/releases/tag/1.0.2

LinkingYou commented 7 years ago

Rein aus dem Contao-Quelltext würde ich das format = 'email' so interpretieren:

Ist der Parameter gesetzt, dann wird die E-Mail in der Erweiterung gebaut (und durch $arrSubmitted['message'] übergeben). Wenn er nicht gesetzt ist, dann wird die E-Mail aus den einzelnen Werten in $arrSubmitted automatisch zusammengebaut.

In Contao 4 würde also das auskommentieren der Zeile zum Ergebnis führen. Keine Ahnung, was dass aber in Contao 3.x anstellt bzw. wie die Funktion gedacht ist:

//$objForm->format = 'email';

kozi commented 7 years ago

New version 1.0.3. Enable format and skipEmpty in DCA tl_form

LinkingYou commented 7 years ago

Super Arbeit. Funktioniert wie gewünscht :-) Danke! 👍