Produktbilder in der Bestellbestätigung werden nicht übertragen bzw. angezeigt

Hallo liebes Forum,

Ich bin neu bei shopware und suche verzweifelt im Forum nach einer Lösung für folgendes Problem:

Wenn ein Kunde im Shop bestellt erhält er im checkout eine Bestellübersicht mit Produktbild. In der Bestellbestätigung per Email wird anstelle des Bildes nur ein Platzhalter angezeigt.

Ich nutze shopware 6.4.10. Im Mailer habe ich alle Variationen (interner Mailer, SLS, TLS) ausprobiert. Leider ohne Erfolg.

Informationen zu Ihrer Bestellung:

Produkt-Nr. Bezeichnung Menge Preis Summe
1066_Umh-O.1
Umhängeschirm „Gradiente Blue“
Kordel/Gurt:: schwarze Polyesterkordel
1 29,50 € €

Screenshot 2022-04-21 203302

.
Das EMail-Template habe ich nicht verändert und sieht so aus:

{% set currencyIsoCode = order.currency.isoCode %}

Hallo {% if order.orderCustomer.salutation %}{{ order.orderCustomer.salutation.translated.letterName ~ ’ ’ }}{% endif %}{{ order.orderCustomer.firstName }} {{ order.orderCustomer.lastName }},



Ihre Bestellung ist am {{ order.orderDateTime|format_datetime(‚medium‘, ‚short‘, locale=‚de-DE‘) }} bei uns eingegangen.



Bestellnummer: {{ order.orderNumber }}



Sobald ein Zahlungseingang erfolgt ist, erhalten Sie eine separate Benachrichtigung und Ihre Bestellung wird verarbeitet.



Den aktuellen Status Ihrer Bestellung können Sie jederzeit über diesen Link abrufen: {{ rawUrl(‚frontend.account.order.single.page‘, { ‚deepLinkCode‘: order.deepLinkCode }, salesChannel.domains|first.url) }}

Über diesen Link können Sie auch die Bestellung bearbeiten, die Zahlungsart wechseln oder nachträglich eine Zahlung durchführen.



Informationen zu Ihrer Bestellung:


{% for lineItem in order.nestedLineItems %}
    {% set nestingLevel = 0 %}
    {% set nestedItem = lineItem %}
    {% block lineItem %}
        <tr>
            <td>{% if nestedItem.payload.productNumber is defined %}{{ nestedItem.payload.productNumber|u.wordwrap(80) }}{% endif %}</td>
            <td>{% if nestedItem.cover is defined and nestedItem.cover is not null %}<img src="{{ nestedItem.cover.url }}" width="75" height="auto"/>{% endif %}</td>
            <td>
                {% if nestingLevel > 0 %}
                    {% for i in 1..nestingLevel %}
                        <span style="position: relative;">
                            <span style="display: inline-block;
                                position: absolute;
                                width: 6px;
                                height: 20px;
                                top: 0;
                                border-left:  2px solid rgba(0, 0, 0, 0.15);
                                margin-left: {{ i * 10 }}px;"></span>
                        </span>
                    {% endfor %}
                {% endif %}

                <div{% if nestingLevel > 0 %} style="padding-left: {{ (nestingLevel + 1) * 10 }}px"{% endif %}>
                    {{ nestedItem.label|u.wordwrap(80) }}
                </div>

                {% if nestedItem.payload.options is defined and nestedItem.payload.options|length >= 1 %}
                    <div>
                        {% for option in nestedItem.payload.options %}
                            {{ option.group }}: {{ option.option }}
                            {% if nestedItem.payload.options|last != option %}
                                {{ " | " }}
                            {% endif %}
                        {% endfor %}
                    </div>
                {% endif %}

                {% if nestedItem.payload.features is defined and nestedItem.payload.features|length >= 1 %}
                    {% set referencePriceFeatures = nestedItem.payload.features|filter(feature => feature.type == 'referencePrice') %}
                    {% if referencePriceFeatures|length >= 1 %}
                        {% set referencePriceFeature = referencePriceFeatures|first %}
                        <div>
                            {{ referencePriceFeature.value.purchaseUnit }} {{ referencePriceFeature.value.unitName }}
                            ({{ referencePriceFeature.value.price|currency(currencyIsoCode) }}* / {{ referencePriceFeature.value.referenceUnit }} {{ referencePriceFeature.value.unitName }})
                        </div>
                    {% endif %}
                {% endif %}
            </td>
            <td style="text-align: center">{{ nestedItem.quantity }}</td>
            <td>{{ nestedItem.unitPrice|currency(currencyIsoCode) }}</td>
            <td>{{ nestedItem.totalPrice|currency(currencyIsoCode) }}</td>
        </tr>

        {% if nestedItem.children.count > 0 %}
            {% set nestingLevel = nestingLevel + 1 %}
            {% for lineItem in nestedItem.children %}
                {% set nestedItem = lineItem %}
                {{ block('lineItem') }}
            {% endfor %}
        {% endif %}
    {% endblock %}
{% endfor %}
Produkt-Nr. Bezeichnung Menge Preis Summe

{% set delivery = order.deliveries.first %}

{% set displayRounded = order.totalRounding.interval != 0.01 or order.totalRounding.decimals != order.itemRounding.decimals %}
{% set decimals = order.totalRounding.decimals %}
{% set total = order.price.totalPrice %}
{% if displayRounded %}
{% set total = order.price.rawTotal %}
{% set decimals = order.itemRounding.decimals %}
{% endif %}



{% for shippingCost in order.deliveries %} Versandkosten: {{ shippingCost.shippingCosts.totalPrice|currency(currencyIsoCode) }}
{% endfor %} Gesamtkosten Netto: {{ order.amountNet|currency(currencyIsoCode) }}
{% for calculatedTax in order.price.calculatedTaxes %} {% if order.taxStatus is same as('net') %}zzgl.{% else %}inkl.{% endif %} {{ calculatedTax.taxRate }}% MwSt. {{ calculatedTax.tax|currency(currencyIsoCode) }}
{% endfor %} {% if not displayRounded %}{% endif %}Gesamtkosten Brutto: {{ total|currency(currencyIsoCode,decimals=decimals) }}{% if not displayRounded %}{% endif %}
{% if displayRounded %} Gesamtkosten Brutto gerundet: {{ order.price.totalPrice|currency(currencyIsoCode,decimals=order.totalRounding.decimals) }}
{% endif %}

<strong>Gewählte Versandart:</strong> {{ delivery.shippingMethod.translated.name }}<br>
{{ delivery.shippingMethod.translated.description }}<br>
<br>

{% set billingAddress = order.addresses.get(order.billingAddressId) %}
<strong>Rechnungsadresse:</strong><br>
{{ billingAddress.company }}<br>
{{ billingAddress.firstName }} {{ billingAddress.lastName }}<br>
{{ billingAddress.street }} <br>
{{ billingAddress.zipcode }} {{ billingAddress.city }}<br>
{{ billingAddress.country.translated.name }}<br>
<br>

<strong>Lieferadresse:</strong><br>
{{ delivery.shippingOrderAddress.company }}<br>
{{ delivery.shippingOrderAddress.firstName }} {{ delivery.shippingOrderAddress.lastName }}<br>
{{ delivery.shippingOrderAddress.street }} <br>
{{ delivery.shippingOrderAddress.zipcode}} {{ delivery.shippingOrderAddress.city }}<br>
{{ delivery.shippingOrderAddress.country.translated.name }}<br>
<br>
{% if order.orderCustomer.vatIds %}
    Ihre Umsatzsteuer-ID: {{ order.orderCustomer.vatIds|first }}
    Bei erfolgreicher Prüfung und sofern Sie aus dem EU-Ausland
    bestellen, erhalten Sie Ihre Ware umsatzsteuerbefreit. <br>
{% endif %}
<br/>
Den aktuellen Status Ihrer Bestellung können Sie auch jederzeit auf unserer Webseite im  Bereich "Mein Konto" - "Meine Bestellungen" abrufen: {{ rawUrl('frontend.account.order.single.page', { 'deepLinkCode': order.deepLinkCode }, salesChannel.domains|first.url) }}
</br>
Für Rückfragen stehen wir Ihnen jederzeit gerne zur Verfügung.


Ich hoffe Ihr könnt mir weiterhelfen.

Viele Grüße

shop15

Hallo Liebes Forum,
hat bitte jemand einen Tipp für mich? Ich komme hier leider nicht weiter.
Vielen Dank vorab.

Wird ggf. eine relative anstatt eine absolute URL gepostet?

wo kann ich das kontrollieren? Im zugehörigen Email-Template habe ich keine solche Einstellung gefunden. Im Flow gibt es auch keine Möglichkeit URL´s einzustellen.
Ich vermute, das das Template auf ein Bild in der Datenbank zugreift, das aber nicht findet bzw. nicht definiert ist. Ich habe ein Einstellung bei den Produkten gesucht, die sagt: „Nimm dieses Bild für die Bestellbestätigung“. Es könnte sein, dass das CoverBild automatisch genommen wird. Kann hier vielleicht ein Programmierer von Shopware helfen?

Hallo in die Runde
Hat wirklich keiner eine Idee?
Kann mir vielleicht jemand ein bei ihm funktionierendes Script zu Verfügung stellen, damit ich prüfen kann, ob es am script liegt oder an irgendeiner Einstellung? Das oben gepostete Script war das, was bei der Installation mitgeliefert wurde und sollte doch eigentlich klappen.
Gruß shop15

Kann dein Mail Programm den Quellcode anzeigen? Oft werden externe Quellen wie Bilder vom Mail Programm nicht geladen.

Hallo Moorleiche,
das dachte ich anfangs auch. Aber selbst in der Template-Vorschau im Backend wird mir kein Bild angezeigt. Daher denke ich, dass etwas am Template selbst nicht funktioniert. Ich habe auch noch nicht verstanden, wo sich die URL zu den Bildern in dem Template befindet.
Wie sieht die Template-Vorschau denn bei Dir aus? - Wird da das Produktbild angezeigt?
Gruß shop15

hallo @shop15,

in deinem Template konnte ich jetzt auf die Schnelle keine Fehler entdecken.

Im Template wird an folgender Stelle das Bild angezeigt, wenn das Cover definiert ist und einen Wert enthält:
<td>{% if nestedItem.cover is defined and nestedItem.cover is not null %}<img src="{{ nestedItem.cover.url }}" width="75" height="auto"/>{% endif %}</td>

Wenn dein Mail Programm den Quellcode anzeigt, könntest du überprüfen was an dieser Stelle gerendert wird.
Meine Vermutung ist, dass die URL nicht stimmt oder diese vom Mail Programm blockiert wird.

Du kannst auch in der Datenbank überprüfen, ob für die order_line_items die Covers überhaupt bzw. richtig gesetzt sind.

vg

Hallo abdullah
Folgendes habe ich mittlerweile herausgefunden:

das Cover ist bei allen Artikeln definiert. Nach erfolgreicher Bestellung wird am Ende des Bestellprozesses in der Übersicht auch das Cover Bild auf dem Bildschirm angezeigt, nur in der Email wird es nicht geladen
die URL die im Quellcode der Mailbestätigung angegeben wird, existiert nicht. Mein hoster hat mir den Tipp gegeben, dass eventuell die Templates nicht erstellt wurden. Ich hoffe, dass ich im Medien-Ordner unter Produkt Media richtig unterwegs bin. Hier sind bei allen Bildern Templates generiert worden (400x400, 800x800 und 1920x1920). Zur Sicherheit habe ich über ssh den Befehl ./console media:generate-thumbnails ausgeführt. => Es wurde nur 1 neuer Thumbnail geniert, 837skipped , waren also vorhanden. Daran scheint es auch nicht gelegen zu haben.
In der Datenbank habe ich die order_line_items gesucht, in der Spalte Cover sind Einträge gesetzt. Diese Einträge verweisen auf die Media-ordner. Scheint daher auch richtig zu sein.

Wird bei Dir in der Vorschau vom Email Template für die Bestellbestätigung denn das Cover Bild angezeigt? - Bei mir nicht.

Ich weiss jetzt absolut nicht weiter - hat bitte noch jemand ein Idee?

vg

Eine Nachfrage noch: Da der URL Pfad in der Mailbestätigung (media/bf/72/19/1611770516/P1019344_gurt.=jpg) nicht existiert: Weiss jemand an welcher Stelle der Speicherort definiert wird? Oder wie die URL für die CoverBilder lauten müßte?

Hallo Liebes Forum,

hat denn wirklich niemand eine Idee für mich?

vg shop 15

Hallo,
wurde hierzu eine Lösung gefunden?
Ich habe aktuell scheinbar das selbe Problem und es liegt an einem zusätzlichen Gleich-Zeichen (=) das im Bildpfad eingefügt wird.

Hallo Webschmiede,
ich habe mühsam folgendes rausgefunden: Das Bild in der Bestellbestätigung wird von dem Originalbild generiert, damit meine ich das Bild welches Du zu dem jeweiligen Produkt hochgeladen hast. In Shopware wird angezeigt, dass das Bild vorhanden ist, es existiert - warum auch immer - aber nicht mehr. So hat es dann bei mir geklappt: Das als Cover gesetzte Bild löschen (nicht ersetzen!) und neu hochladen. Hier wirst Du gefragt, ob du das Bild ersetzen willst, was Du mit Ja bestätigen kannst. => Cache löschen (sicherheitshalber) => Bild wird in der Bestellbestätigung angezeigt :smiley:
Das doofe ist, dass ich mittlerweile über 150 Artikel mit unzähligen Produktvarianten eingestellt habe und jetzt für jedes Bild, welches ich als Cover setzen möchte, nach dem oben beschriebenen Vorgang löschen und ersetzen möchte. Wenn hier jemand eine Idee hat wie das einfacher geht, wäre ich euch dankbar.