Hallo zusammen,
gerade möchte ich die Kompatibilität eines PlugIns zu Shopware 5.7.0 (RC) herstellen.
In der Kombination SW 5.7.0 + PHP 7.x funktioniert bereits alles tadellos.
Gerade stecke ich bei der Kombination SW 5.7.0 + PHP 8.0 fest.
Unter PHP 8 wird der Fehler immer dann geschmissen, wenn ich in einem Subscriber eine E-Mail (Shopware_Components_TemplateMail) versenden möchte.
Ich kann das Objekt Instanzieren. Der Fehler wird erst bei Aufruf von ->send() geschmissen.
Zurück kommt eine Meldung von ZEND_MAIL (siehe unten). Wie gesagt. Mit PHP < 8 funktioniert alles.
Kurios ist jedoch, dass der Versand von E-Mails aus Cronjob-Subscribern heraus auch mit PHP 8 tadellos funktioniert.
Hatte jemand schon mal etwas ähnliches oder einen Ansatz?
Hier ein Beispiel für einen Subscriber, in dem die Mail generiert werden soll:
class BeispielSubscriber implements SubscriberInterface
{
/**
* Constructor, etc., p.p.
*/
public static function getSubscribedEvents()
{
return [
'Enlight_Controller_Action_PreDispatch_Frontend' => 'onFrontendPreDispatch',
];
}
/**
* @param \Enlight_Controller_ActionEventArgs $args
* @throws \Exception
*/
public function onFrontendPreDispatch(\Enlight_Controller_ActionEventArgs $args)
{
$mailAddress = $this->shopConfig->get('sMAIL');
try {
$mail = $this->templateMail->createMail(ConstantsProvider::SOME_MAIL_TEMPLATE);
$mail->addTo($this->shopConfig->get('sMAIL'));
$mail->send();
} catch (\Exception $e) {
throw $e;
}
}
}
In diesem Fall wird ‚templateMail‘ dem Subscriber als Argument übergeben.
Auch wenn ich es wie folgt über den container beziehe, wird der Fehler geworfen:
$mail = $this->container->get('templatemail')->createMail(ConstantsProvider::SOME_MAIL_TEMPLATE);
Im Cronjob beutze ich genau den gleichen Zeilen um die Mail zu versenden und hier geht es.
Die Ausgabe des Fehlers im FE:
Fatal error: Uncaught Zend_Mail_Transport_Exception:
Unable to send mail. in /html/shopware.57/engine/Library/Zend/Mail/Transport/Sendmail.php:134
Stack trace:
#0 /html/shopware.57/engine/Library/Zend/Mail/Transport/Abstract.php(343): Zend_Mail_Transport_Sendmail->_sendMail()
#1 /html/shopware.57/engine/Library/Zend/Mail.php(1176): Zend_Mail_Transport_Abstract->send(Object(Enlight_Components_Mail))
#2 /html/shopware.57/engine/Library/Enlight/Components/Mail.php(401): Zend_Mail->send(Object(Zend_Mail_Transport_Sendmail))
#3 /html/shopware.57/custom/plugins/MyPluginPath/Subscriber/BeispielSubscriber.php(139): Enlight_Components_Mail->send()
#4 /html/shopware.57/engine/Library/Enlight/Event/Handler/Default.php(87): MyPluginPath\Subscriber\BeispielSubscriber->onFrontendPreDispatch(Object(Enlight_Controller_ActionEventArgs))
#5 /html/shopware.57/engine/Library/Enlight/Event/EventManager.php(214): Enlight_Event_Handler_Default->execute(Object(Enlight_Controller_ActionEventArgs))
#6 /html/shopware.57 in /html/shopware.57/engine/Library/Zend/Mail/Transport/Sendmail.php on line 134