# \[GELÖST\] Event oder Hook für sendMail() oder createMail()?

**URL:** <https://forum.shopware.com/t/gelost-event-oder-hook-fur-sendmail-oder-createmail/30616>\
**Category:** Programmierung\
**Created:** [17. September 2015 um 20:04 UTC](https://forum.shopware.com/t/gelost-event-oder-hook-fur-sendmail-oder-createmail/30616 "2015-09-17T20:04:36Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![sschreier](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/sschreier/32/23296_2.png) [@sschreier](https://forum.shopware.com/u/sschreier)\
**Post date:** [17. September 2015 um 20:04 UTC](https://forum.shopware.com/t/gelost-event-oder-hook-fur-sendmail-oder-createmail/30616/1 "2015-09-17T20:04:36Z")

</div>

Hallo liebe shopware - Gemeinde,

gibt es ein Event oder eine Hook, wo man sich an die sendMail()-Funktion (sAdmin.php) oder die createMail()-Funktion (TemplateMail.php) dranhängen kann, um davor oder danach etwas auszuführen (beispielsweise eine E-Mail an den Shopbetreiber, etc.), also beim Senden jeglicher E-Mails, egal wo oder durch wen die EMail-Senden-Aktion angestoßen wurde?

```
 $this-\>subscribeEvent( 'sAdmin::sendMail::after', 'onSendMail' ); 

```

Mit dem Code würde ich mich ja zumindestens schonmal an die sendMail()-Funktion dranhängen können, ich bin mir nur unsicher, ob die auch wirklich überall verwendet wird, um E-Mails zu senden. Komme ich irgendwie an die Daten innerhalb der Funktion ran (Template, Kontext, etc.), oder müsste ich sie komplett überschreiben (replace)? Sie hat ja keinen Rückgabewert.

die createMail()-Funktion scheint ja von allen genutzt zu werden, aber da dürfte es ja kein Event oder Hook geben oder?

Beste Grüße

Sebastian

---

<div class="post-metadata">

**Author:** ![simkli](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/simkli/32/13124_2.png) [@simkli](https://forum.shopware.com/u/simkli)\
**Post date:** [17. September 2015 um 21:30 UTC](https://forum.shopware.com/t/gelost-event-oder-hook-fur-sendmail-oder-createmail/30616/2 "2015-09-17T21:30:38Z")

</div>

Hallo sschreier, Ich habe mir das mal kurz angesehen. Die sendMail() Funktion der sAdmin Klasse nutzt auch die Funktion Shopware()-\>TemplateMail()-\>createMail(…). Diese gibt ein Objekt der Klasse Enlight\_Components\_Mail zurück. Ich denke mal, dass Shopware diese Klasse für alle Emails verwendet. Und das Beste daran: Es gibt ein fertiges Event in dieser Klasse namens “Enlight\_Components\_Mail\_Send”. Damit solltest du wirkliche jede Email, die über Shopware versendet wird, abfangen können. ` // Registrierung $this-\>subscribeEvent( 'Enlight\_Components\_Mail\_Send', 'onMailSend' ); // Listener public function onMailSend(Enlight\_Event\_EventArgs $arguments) { $mail = $arguments-\>getSubject(); $transport = $arguments-\>getTransport(); /\* ... \*/ } ` Viele Grüße P.S. Der BBCode “code” geht schon wieder nicht :shock:

---

<div class="post-metadata">

**Author:** ![sschreier](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/sschreier/32/23296_2.png) [@sschreier](https://forum.shopware.com/u/sschreier)\
**Post date:** [17. September 2015 um 22:49 UTC](https://forum.shopware.com/t/gelost-event-oder-hook-fur-sendmail-oder-createmail/30616/3 "2015-09-17T22:49:59Z")

</div>

[quote=„simkli“]Hallo sschreier, Ich habe mir das mal kurz angesehen. Die sendMail() Funktion der sAdmin Klasse nutzt auch die Funktion Shopware()-\>TemplateMail()-\>createMail(…). Diese gibt ein Objekt der Klasse Enlight\_Components\_Mail zurück. Ich denke mal, dass Shopware diese Klasse für alle Emails verwendet. Und das Beste daran: Es gibt ein fertiges Event in dieser Klasse namens „Enlight\_Components\_Mail\_Send“. Damit solltest du wirkliche jede Email, die über Shopware versendet wird, abfangen können. ` // Registrierung $this-\>subscribeEvent( 'Enlight\_Components\_Mail\_Send', 'onMailSend' ); // Listener public function onMailSend(Enlight\_Event\_EventArgs $arguments) { $mail = $arguments-\>getSubject(); $transport = $arguments-\>getTransport(); /\* ... \*/ } ` Viele Grüße P.S. Der BBCode „code“ geht schon wieder nicht :shock:[/quote] Hallo simkli, danke erstmal für deine Hilfe, das Event war genau das, was ich gesucht (und übersehen) habe. Nur bekomme ich (beispielsweise beim Senden einer Status-E-Mail) bei $mail = $arguments-\>getSubject(); und $transport = $arguments-\>getTransport(); jeweils null zurückgeliefert. Ansich müsste die Funktion bzw. das Event ja das Mail-Objekt zurückwerfen, auf das man zugreifen könnte (wie mit $arguments-\>getSubject() auf den Betreff). Nur ist der Wert, der zurückgeliefert wird, null (sowohl bei der Bestellbestätigungsemail als auch bei den Statusemails). Hast du eine Idee, warum? Beste Grüße Sebastian

---

<div class="post-metadata">

**Author:** ![sschreier](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/sschreier/32/23296_2.png) [@sschreier](https://forum.shopware.com/u/sschreier)\
**Post date:** [21. September 2015 um 08:13 UTC](https://forum.shopware.com/t/gelost-event-oder-hook-fur-sendmail-oder-createmail/30616/4 "2015-09-21T08:13:49Z")

</div>

Hallo liebe Shopware - Gemeinde, ich habe das Problem nun gelöst und komme nun an die einzelnen Felder, es fehlte noch ein anderer Aufruf. Ich danke simkli für die Hilfe. Beste Grüße Sebastian

---

<div class="post-metadata">

**Author:** ![Misengo](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/misengo/32/21446_2.png) [@Misengo](https://forum.shopware.com/u/Misengo)\
**Post date:** [26. Februar 2018 um 17:29 UTC](https://forum.shopware.com/t/gelost-event-oder-hook-fur-sendmail-oder-createmail/30616/5 "2018-02-26T17:29:43Z")

</div>

\*reminder\*
