Variable in Emailtemplate verhindert Emailversand

Wenn ich in der Emailtemplate auf informatioen aus der Lieferadresse zugrifen will, z.B. mit {{ order.deliveries[0].shippingOrderAddress.zipcode }}, funktioniert die Vorschauanzeige für die Emailvorlage korrekt, aber Emails werden keine versendet. Das Log war uach nicht sonderlich aufschlussreicht:
state_enter.order_delivery.state.cancelled Debug (100)
mail.before.send Info (200)
state_leave.order_delivery.state.open Debug (100)

Diverse Workaround hab ich schon probier, z.B. den hier:

Hallo @Albin,

es kann schon einmal vorkommen, dass sich die Variablen in den E-Mail Templates verändern. Folgende Variablen werden ausgegeben, wenn man das Variablen Menü in der Sidebar verwendet.
Über Order → addresses → 0 → zipcode: {{ order.addresses.at(0).zipcode }}
Über Order → deliveries → 0 → shippingOrderAddress → Zipcode: {{ order.deliveries.at(0).shippingOrderAddress.zipcode }}
Am besten kannst du diese einmal ausprobieren. Die veränderte Klammer könnte hier bereits das Problem sein.

MfG
Patrick

Moin Patrick,

meine ursprüngliche Notation kommt aus der Auto-Vervollständigung, die Sidebar gibt mir folgende Notation aus:
{{ order.deliveries.0.shippingOrderAddress.zipcode }}
Das Resultat bleibt das gleiche, Preview funktioniert, aber die Email wird nicht versendet.

Auch beide Deiner Notationen hab ich getestet, bei denen funktioniert weder die Preview noch der Emailversand.

Zudem hab ich noch folgende abgewandelte Notationen ausprobiert um die Klammer als Ursache auszuschliessen, auch hier funktioniert werder Preview noch der Mailversand:
{{ order.deliveries(0).shippingOrderAddress.zipcode }}
{{ order.deliveries.(0).shippingOrderAddress.zipcode }}

Ohne diese Variable funktioniert der Mailversand korrekt, handelt es sich möglicherweise um einen Bug?

PS. Das Problem betrifft auch andere Attribute aus dem Delivery-Objekt nicht nur den ZIP-Code

Hi @Albin,

welche Shopware Version verwendest du denn? Würde das dann einmal testen und eventuell ein Bugticket einstellen.

Könntest du einmal in deinem Shopware log auf dem Server nachgucken, ob hier eine etwas aufschlussreicherer Fehlermeldung zu finden ist.
Die logs findest du in deinem Shopware root Verzeichnis unter var -> log
Hier sollte dann eine Datei mit dem heutigen Datum zu finden sein.

MfG
Patrick

Moin @PatrickHoelscher

Aktuell verwendete ich noch die Version 6.4.4.0 (event. würde noch aktuallisieren probieren, aber im Changlog konnte ich keinen Bugfix ausfindig machen, der auf dieses Problem hinweist).

Im Log gibts folgende Fehlermeldung:
app.ERROR: Could not render Mail-Template with error message: Failed rendering string template using Twig:

  • für die .at(0). Notation (Deine Vorschläge):
    Neither the property "at" nor one of the methods "at()", "getat()"/"isat()"/"hasat()" or "__call()" exist and have public access in class "Shopware\Core\Checkout\Order\Aggregate\OrderDelivery\OrderDeliveryCollection" in "674d6831e4cd9c75d0ed797ee992ba0b" at line 2. Error Code:0 Template source: (...)

  • für die .0. Schreibweise (aus der Sidebar) - ebenso wie bei der @-Notation:
    Neither the property "0" nor one of the methods "0()", "get0()"/"is0()"/"has0()" or "__call()" exist and have public access in class "Shopware\Core\Checkout\Order\Aggregate\OrderDelivery\OrderDeliveryCollection" in "4230922e23fe5e5ae25bb17b61ff0c52" at line 2. Error Code:0 Template source: (...)

  • für die .deliveries[0]. Notation (aus der Autovervollständigung):
    Impossible to access a key "0" on an object of class "Shopware\Core\Checkout\Order\Aggregate\OrderDelivery\OrderDeliveryCollection" that does not implement ArrayAccess interface in "988492e0bc95252c0597395059ad7db1" at line 2. Error Code:0 Template source: (...)

Und bezgüglich der alternativen Klammern:

  • .deliveries(0).shippingOrderAddress erzeugt
    Neither the property "shippingOrderAddress" nor one of the methods "shippingOrderAddress()", "getshippingOrderAddress()"/"isshippingOrderAddress()"/"hasshippingOrderAddress()" or "__call()" exist and have public access in class "Shopware\Core\Checkout\Order\Aggregate\OrderDelivery\OrderDeliveryCollection" in "b93711a0a97320de0beaede76d368264" at line 2. Error Code:0 Template source: (...)

  • deliveries.(0).shippingOrderAddress erzeugt
    Expected name or number in "c69b2a9540e5dfa943df9bdcb77fb406" at line 2. Error Code:0 Template source: (...)

Danke!

Hi @Albin,
bin jetzt einmal dazu gekommen das zu testen und in der 6.4.4.0 konnte ich das gleiche Problem feststellen.
Bei neueren Versionen allerdings nicht. Am besten kannst du in einer Testumgebung einmal gucken ob das Update bei dir auch hilft.

MfG
Patrick

Ich wärme das Thema mal wieder auf.

Wir erhalten keine Emails mehr über die Kontaktformulare.

Fehler:

Could not render Mail-Template with error message: Failed rendering string template using Twig: Variable "order" does not exist in "ef8e945c67aed06819e9b5d5d43ea32f" at line 1. {"template":"Guten Tag {{ order.orderCustomer.firstName }} ......

Wir haben nur ein Email-Template vom Typ Kontaktformular. In diesem wird die Variable Order.orderCustomer.firstName und auch weitere nicht verwendet!! Es werden nur die Variablen aus dem Formular abgefragt.

Wie kann das sein??

HILFE!

Viele Grüße
Moira

Hi @Panasiam_Clothing,

guck am besten einmal über den Flow-Builder, welches Template wirklich benutzt wird.
Einstellungen > Flow-Builder > Name: " [Contact form sent] " | Auslöser: [Kontaktformular wurde verschickt][contact_form.send]

Hier müsstest du dann einmal den HTML Text untersuchen.

MfG
Patrick

Danke @PatrickHoelscher,

das ist die Vorlage in der ich nachgesehen habe. Das Feld wird nicht verwendet…nichts mit Kunden (Customer), nur contactFormData Variablen!

Viele Grüße
Moira

  • gibt es vielleicht mehrere Templates vom Typ ‚Kontaktformular‘?
  • wird die Variable in einem der anderen Felder (Betreff, Absender, Text) verwendet?
  • wird die Variable im Mail-Header oder Footer verwendet? (wäre jetzt mein guess)
1 „Gefällt mir“

Warum meinen Nachricht gelöscht wurde? Keine Ahnung.

Vielen Dank @AlexGalax

Es war der Email Header.

Viele Grüße
Moira