# E-Mail Template über Plugin mit Variablen im Content

**URL:** https://forum.shopware.com/t/e-mail-template-uber-plugin-mit-variablen-im-content/52718
**Category:** Programmierung
**Created:** [3. Mai 2018 um 12:18 UTC](https://forum.shopware.com/t/e-mail-template-uber-plugin-mit-variablen-im-content/52718 "2018-05-03T12:18:46Z")
**Posts on this page:** 3
**Page:** 1

<div class="post-metadata">

### Author: ![iLuHa](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/iluha/32/8191_2.png) [@iLuHa](https://forum.shopware.com/u/iLuHa)
#### Post date: [3. Mai 2018 um 12:18 UTC](https://forum.shopware.com/t/e-mail-template-uber-plugin-mit-variablen-im-content/52718/1 "2018-05-03T12:18:46Z")

</div>

Hallo zusammen,

ich bin gerade dabei ein Plugin zu schreiben, welches ein E-Mail Template anlegt.  
Die Funktion an sich sieht ca. so aus und funktioniert auch problemlos:

```
protected function createMailTemplate()
{
    $em = $this->container->get('models');
    if(!$repository) {
        $repository = $em->getRepository(Mail::class);
    }
    $mail = $repository->findOneBy(['name' => 'sMEINEMAILTEMPLATE']);
    if(!$mail) {
        $content = $this->getHtmlMailContent();
        $mail = new Mail();
        $mail->setName('sMEINEMAILTEMPLATE');
        $mail->setFromMail('{config name=mail}');
        $mail->setFromName('{config name=shopName}');
        $mail->setSubject("Hier kommt der Titel!");
        $mail->setContentHtml($content);
        $mail->setIsHtml(1);
        $mail->setMailtype(Mail::MAILTYPE_SYSTEM);

        $em->persist($mail);
        $em->flush($mail);
    }
}

```

Das Problem habe ich nun im Content selbst.  
In meiner $content Variable steht irgendwo im Text sowas wie folgendes:

```
protected function getHtmlMailContent() [
    $content = "[...]
                 Hier klicken
                [...]";
    return $content;
}

```

Nun wird aber die $sShopURL Variable scheinbar zu früh “verarbeitet” da im Backend anschließend nur noch das “/MeinPluginController” im HREF steht.  
Hier sollte aber natürlich {sShopURL} stehen. Ich habe auch schon versucht das Zeichen in Unicode als&nbsp;$ anzugeben, aber auch hier natürlich nicht der gewünschte Effekt.

Jetzt stellt sich mir die Frage, kann ich überhaupt direkt beim Erstellen des E-Mail Templates (innerhalb meines Plugins) die entsprechenden E-Mail Variablen verwenden damit die direkt dort stehen wo sie sollen und wenn ja, was mache ich falsch 😉 ? Oder bleibt mir nur die entsprechenden Variablen übers Backend nachzupflegen, nachdem das E-Mail Template vom Plugin erstellt wurde?

Vielen Dank.

---

<div class="post-metadata">

### Author: ![iLuHa](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/iluha/32/8191_2.png) [@iLuHa](https://forum.shopware.com/u/iLuHa)
#### Post date: [3. Mai 2018 um 12:27 UTC](https://forum.shopware.com/t/e-mail-template-uber-plugin-mit-variablen-im-content/52718/2 "2018-05-03T12:27:05Z")

</div>

Ok das Thema hat sich erledigt … da hätte ich auch früher drauf kommen können 😃

Für diejenigen die das gleiche Problem haben sollten:

```
$content = "[...]Hier klicken[...]";

```

Einfach das $ mit einem \ escapen.

---

<div class="post-metadata">

### Author: ![arnebecker](https://avatars.discourse-cdn.com/v4/letter/a/3bc359/32.png) [@arnebecker](https://forum.shopware.com/u/arnebecker)
#### Post date: [3. Mai 2018 um 19:40 UTC](https://forum.shopware.com/t/e-mail-template-uber-plugin-mit-variablen-im-content/52718/3 "2018-05-03T19:40:10Z")

</div>

Oder wenn es viele Zeichen zu maskieren gibt, dann die HEREDOC Syntax nutzen:&nbsp;[http://php.net/manual/de/language.types.string.php#language.types.string.syntax.heredoc](http://php.net/manual/de/language.types.string.php#language.types.string.syntax.heredoc)
