Wie versendet man E-Mails aus Shopware 6 programmatisch?

Send Emails From Shopware 6

Der programmgesteuerte Versand von E-Mails aus Shopware 6 kann mithilfe der von Shopware bereitgestellten Dienste und Komponenten erfolgen. Dazu müssen Sie ein benutzerdefiniertes Plugin erstellen und den Shopware Email Service zum Versenden von E-Mails verwenden. Hier finden Sie eine Schritt-für-Schritt-Anleitung, die Ihnen dabei hilft, dies zu erreichen:

Schritt 1: Richten Sie Ihr benutzerdefiniertes Plugin ein

  1. Erstellen Sie ein benutzerdefiniertes Plugin in Shopware 6. Sie können das Shopware CLI-Tool verwenden, um das Plugin-Skelett zu erstellen:
bin/console plugin:create YourPluginName
  1. Aktivieren Sie das Plugin:
bin/console plugin:activate YourPluginName

Schritt 2: Implementierung der E-Mail-Versandlogik

  1. Erstellen Sie eine neue Dienstklasse in Ihrem benutzerdefinierten Plugin. Dieser Dienst wird den E-Mail-Versandprozess abwickeln. Nennen wir ihn zum Beispiel EmailSenderService.
  2. Implementieren Sie eine Methode in EmailSenderService, die den E-Mail-Versand abwickeln wird. Dazu können Sie den Shopware\Core\Content\MailTemplate\Service\MailService und den Shopware\Core\Framework\Context in den Dienstkonstruktor injizieren.
// YourPluginName/src/Service/EmailSenderService.php

use Shopware\Core\Content\MailTemplate\Service\MailService;
use Shopware\Core\Framework\Context;

class EmailSenderService
{
    private $mailService;
    private $context;

    public function __construct(MailService $mailService, Context $context)
    {
        $this->mailService = $mailService;
        $this->context = $context;
    }

    public function sendEmail($recipientEmail, $templateId, $senderEmail, $senderName, $data = [])
    {
        $this->mailService->send(
            [$recipientEmail],
            $templateId,
            $data,
            $this->context,
            $senderEmail,
            $senderName
        );
    }
}

Schritt 3: Konfigurieren Sie E-Mail-Vorlagen

  1. Bevor Sie E-Mails versenden, müssen Sie die E-Mail-Vorlagen in der Shopware-Administration unter „Einstellungen“ > „E-Mail-Vorlagen“ einrichten. Erstellen Sie hier Ihre benutzerdefinierte(n) E-Mail-Vorlage(n) und notieren Sie sich die Vorlagen-ID(s).

Schritt 4: Verwenden Sie den EmailSenderService in Ihrem benutzerdefinierten Code

Nun, da Sie Ihren EmailSenderService eingerichtet haben, können Sie ihn überall dort verwenden, wo Sie E-Mails programmatisch von Ihrem Plugin aus senden müssen. Zum Beispiel in einem Controller:

// YourPluginName/src/Controller/MyCustomController.php

use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;

class MyCustomController extends AbstractController
{
    /**
     * @Route("/send_email", name="send_email_route")
     */
    public function sendEmail(EmailSenderService $emailSenderService): Response
    {
        $recipientEmail = 'recipient@example.com';
        $templateId = 'your_template_id'; // Replace with the actual template ID you configured
        $senderEmail = 'sender@example.com';
        $senderName = 'Your Sender Name';
        $data = [
            'some_variable' => 'Hello, this is a test email!',
            // Add any other variables your email template might need
        ];

        // Call the EmailSenderService to send the email
        $emailSenderService->sendEmail($recipientEmail, $templateId, $senderEmail, $senderName, $data);

        return new Response('Email sent successfully!');
    }
}

Mit dieser Einrichtung wird bei jedem Zugriff auf die send_email-Route in Ihrem Shopware-Schaufenster oder Backend die E-Mail unter Verwendung der konfigurierten Vorlage und Variablen gesendet.

Denken Sie daran, die Platzhalter und Variablen an Ihren speziellen Anwendungsfall anzupassen, und stellen Sie sicher, dass Sie alle möglichen Fehler oder zusätzlichen Konfigurationen entsprechend Ihren Anforderungen behandeln.

Bitte beachten Sie, dass Shopware 6 Aktualisierungen und Änderungen erhalten kann. Es ist daher ratsam, die offizielle Dokumentation auf Änderungen in Bezug auf den E-Mail-Versand in Shopware 6 zu überprüfen.

Bitte kontaktieren Sie uns unter manish@bay20.com oder rufen Sie uns unter +91-8800519180 an, wenn Sie Unterstützung für Shopware 6 benötigen. Sie können auch die Shopware 6 Entwicklungsseite besuchen, um die von uns angebotenen Dienstleistungen zu überprüfen.