createMail() und Subshop

Hallo,

Ich nutze bei einem Plugin ein eigenes Email-Template und verschicke im Frontend das z.B.

$shop = Shopware()->Models()->getRepository('Shopware\Models\Shop\Shop')->getActiveById(1);
Shopware()->TemplateMail()->createMail('sMEINPLUGIN', $context, $shop);

Wenn sich der Besucher im Frontend in einem Subshop befindet, werden für Email-Header und Footer auch die Einstellungen aus dem Subshop verwendet für den Emailversand.

Allerdings werden im Anschluss von dem Plugin auch Emails aus dem Backend versendet. Hier verwendet die createMail Funktion dann aber immer die Einstellungen aus dem Standardshop.

$shop = Shopware()->Models()->getRepository('Shopware\Models\Shop\Shop')->find(4); // test für Subshop ID=4
//$shop = Shopware()->Models()->getRepository('Shopware\Models\Shop\Shop')->getById(4); // ebenfalls getestet ohne Erfolg
$mail = Shopware()->TemplateMail()->createMail('sMEINPLUGIN', $context, $shop);

Kann mir vielleicht jemand sagen, wie er sich hier die richtigen Einstellungen analog zum Versand aus dem Frontend bekomme?

Danke und Gruss

Hallo,

ich stehe vor einem ähnlichen Problem. Dein Beitrag ist ja schon ziemlich alt. Hast du in der Zwischenzeit eine Lösung gefunden? Ich bin nur über dieses Ticket hier gestolpert, dass auf ‘wontfix’ steht: https://issues.shopware.com/issues/SW-12133

Grüße
Björn

puh, das ist schon lange her.

Hab aber mal in den Backend-Controller geschaut und das müsste es sein:

// set mail template translation based on subshopId
$repository = Shopware()->Models()->getRepository('Shopware\Models\Shop\Shop');
// The (sub-)shop might be inactive by now, so that's why we use `getById` instead of `getActiveById`
$shop = $repository->getById($subshopId);
$shop->registerResources();

$mail = Shopware()->TemplateMail()->createMail('sMEINPLUGIN', $context, $shop);
$mail->addTo ($email);

Du musst dir über das Shop-Repository den aktuellen Subshop holen und den an die Mail-Funktion übergeben.