Email mithilfe eines Plugins senden

Guten Tag,

Ich habe ein Plugin geschrieben, dass den Warenkorb nach 30Tagen inaktivität löscht.

Nun möchte ich dass mein Plugin nach 25 Tagen eine Mail an den Kunden sendet, mein Code zum senden der Mail sieht wie folgt aus:


 public function \_\_construct( MailServiceInterface $mailService, ) { $this-\>mailService = $mailService; } private function sendMyMail(SalesChannelContext $salesChannelContext): void { $data = new ParameterBag(); $data-\>set( 'recipients', ['foo@bar.com' =\> 'John Doe'] ); $data-\>set('senderName', 'I am the Sender'); $data-\>set('contentHtml', 'Foo bar'); $data-\>set('contentPlain', 'Foo bar'); $data-\>set('subject', 'The subject'); $data-\>set('salesChannelId', $salesChannelContext-\>getSalesChannel()-\>getId()); $this-\>mailService-\>send( $data-\>all(), $salesChannelContext-\>getContext(), ); } 

Service ist auch angemeldet.

<service>id="CartReminder\Storefront\Subscriber\CartReminderSubscriber"&gt;
    <argument>id="Shopware\Core\Content\MailTemplate\Service\MailService" <em>type</em>="service"/&gt;

 </argument></service>

nur funktioniert er leider nicht :smiley:

Habt ihr vielleicht eine Idee was falsch ist oder ob es eine andere Lösung gibt?

Wäre für jede hilfe dankbar.

 

Mit freundlichen Grüßen

Federico

hi,

versuch es mal nicht mit dem MailServiceInterface sondern mit dem MailService

das ist soweit ich mich erinnere - nur ein weiterer - fehler in der Doku

 

Ansonsten ist folgend mein funktionales Mail-aus-einem-plugin-verschicken setup

 

<?php declare(strict_types=1);

namespace SynlabOrderInterface\Core\Api\Utilities;   use Shopware\Core\Content\MailTemplate\Service\MailService; use Shopware\Core\Framework\Context; use Symfony\Component\DependencyInjection\ParameterBag\ParameterBag;   /\*   Contains the mail service and dispatches requested eMails   \*/ class OrderInterfaceMailServiceHelper { /\*\* @var MailService $mailserviceInterface \*/ private $mailservice; public function \_\_construct(MailService $mailservice) { $this-\>mailservice = $mailservice; }   public function sendMyMail(string $mailaddress, $recipientName ,$salesChannelID, string $subject, string $notification): void { $data = new ParameterBag(); $data-\>set( 'recipients', [ $mailaddress =\> $recipientName ] );   $data-\>set('senderName', 'OrderInterfaceAdministrationBackend');   $data-\>set('contentHtml', $notification); $data-\>set('contentPlain', $notification); $data-\>set('subject', $subject); $data-\>set('salesChannelId', $salesChannelID);   $this-\>mailservice-\>send( $data-\>all(), Context::createDefaultContext() ); } }

 

und die registrierung des services…

service id=„SynlabOrderInterface\Core\Api\Utilities\OrderInterfaceMailServiceHelper“ public=„true“

argument id=„Shopware\Core\Content\MailTemplate\Service\MailService“ type=„service“/

/service

(habe die < > entfernt da es scheinbar sonst nicht angezeigt wird…)

ich verschicke die mails von einem controller, diesem übergebe ich beim registrieren meinen „MailServiceHelper“ und rufe dann SendMyMail auf

$this->oimailserviceHelper->sendMyMail($recipientAddress, $recipientName, $notificationSalesChannel, $errorSubject, $errorMessage);

1 Like