> ## Documentation Index
> Fetch the complete documentation index at: https://dokumentation.websale.de/llms.txt
> Use this file to discover all available pages before exploring further.

# Newsletter

> Newsletter-Aktionen für Abonnenten: Anmeldung, Double-Opt-In-Bestätigung und Abmeldung vom Newsletter direkt aus dem Frontend ausführen.

In diesem Abschnitt werden die verfügbaren Aktionen im Bereich Newsletter beschrieben. Mit diesen Aktionen können Kunden den Newsletter abonnieren, ihre Anmeldung bestätigen und sich wieder abmelden.

***

## Aktionen im Überblick

| **Aktion**                     | **Beschreibung**                                      |
| ------------------------------ | ----------------------------------------------------- |
| `NewsletterSubscribe`          | Meldet einen Kunden für den Newsletter an.            |
| `NewsletterSubscribeConfirm`   | Bestätigt die Newsletter-Anmeldung per Double-Opt-In. |
| `NewsletterUnsubscribe`        | Meldet einen Kunden vom Newsletter ab.                |
| `NewsletterUnsubscribeConfirm` | Bestätigt die Newsletter-Abmeldung per Double-Opt-In. |

***

## Aktionen

### NewsletterSubscribe

Mit dieser Aktion wird ein Kunde für den Newsletter angemeldet. Nach erfolgreicher Anmeldung erhält der Kunde eine Bestätigungs-E-Mail mit einem Double-Opt-In Link.

**Anwendungsbeispiel**\
Nutzbar auf einer Newsletter-Anmeldeseite, auf der Kunden ihre E-Mail-Adresse und optional eine oder mehrere Zielgruppen auswählen können.

**Parameter**

| **Name**             | **Beschreibung**                                                    |
| -------------------- | ------------------------------------------------------------------- |
| `email`              | Die E-Mail-Adresse, die für den Newsletter angemeldet werden soll.  |
| `targetGroupId.(id)` | Optionale Zielgruppen-ID, für die der Kunde angemeldet werden soll. |

**Fehlercodes**

| **Fehlercode**         | **Beschreibung**                                              |
| ---------------------- | ------------------------------------------------------------- |
| `missingEmail`         | Parameter `email` fehlt.                                      |
| `emailCheckFailed`     | Die angegebene E-Mail-Adresse ist ungültig.                   |
| `accountAlreadyExists` | Die E-Mail-Adresse ist bereits für den Newsletter angemeldet. |

**Zugehörige Module, Variablen & Methoden**

* [\$wsNewsletter](/frontend/referenz/module/wsnewsletter)
* [\$wsNewsletter.getTargetGroups()](/frontend/referenz/module/wsnewsletter#\$wsnewsletter-gettargetgroups)

**Beispiel** das zeigt, wie ein Kunde seine E-Mail-Adresse und optional Zielgruppen auswählt, um den Newsletter zu abonnieren, inklusive Erfolgsausgabe nach der Anmeldung.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{{ var $myActionNewsletterSubscribe = $wsActions.create("NewsletterSubscribe") }}
<form method="post" action="{{= $wsViews.current.url() }}">
    <input type="hidden" name="wscsrf" value="{{= $myActionNewsletterSubscribe.csrf }}">
    <input type="hidden" name="wsact" value="{{= $myActionNewsletterSubscribe.id }}">
    {{ if $myActionNewsletterSubscribe.success }}
        <div class="alert alert-success">Newsletter erfolgreich abonniert.</div>
    {{ /if }}
    {{ foreach $myNewsletterList in $wsNewsletter.getTargetGroups() }}
        <input type="checkbox" value="{{= $myNewsletterList.id }}" name="targetGroupId.{{= $myNewsletterList.id }}">
        <label>{{= $myNewsletterList.name }}</label>
    {{ /foreach }}
    <input type="email" name="email">
    <button type="submit">Newsletter abonnieren</button>
</form>
```

***

### NewsletterSubscribeConfirm

Mit dieser Aktion wird die Newsletter-Anmeldung per Double-Opt-In bestätigt. Der Kunde erhält nach der Anmeldung eine E-Mail mit einem Bestätigungslink, über den diese Aktion ausgelöst wird.

**Anwendungsbeispiel**\
Nutzbar auf der Bestätigungsseite, auf die der Kunde nach Klick auf den Opt-In-Link in der Anmelde-E-Mail weitergeleitet wird.

**Fehlercodes**

| **Fehlercode** | **Beschreibung**                               |
| -------------- | ---------------------------------------------- |
| `unauthorized` | Es wurde kein gültiger Opt-In-Token übergeben. |

**Zugehörige Module, Variablen & Methoden**

* [\$wsNewsletter](/frontend/referenz/module/wsnewsletter)

**Beispiel** das zeigt, wie nach erfolgreicher Bestätigung eine Erfolgsmeldung angezeigt wird und bei einem ungültigen Token ein Fehlerhinweis erscheint.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{{ var $myActionNewsletterSubscribeConfirm = $wsActions.create('NewsletterSubscribeConfirm') }}
<form method="post" action="{{= $wsViews.current.url() }}">
    <input type="hidden" name="wscsrf" value="{{= $myActionNewsletterSubscribeConfirm.csrf }}">
    <input type="hidden" name="wsact" value="{{= $myActionNewsletterSubscribeConfirm.id }}">
    {{ if $myActionNewsletterSubscribeConfirm.success }}
        <div class="alert alert-success">Newsletter erfolgreich abonniert.</div>
    {{ else }}
        {{ include "components/errorAlert.htm" with $cAction = $cActionNewsletterSubscribeConfirm }}
        <button type="submit">Anmeldung bestätigen.</button>
    {{ /if }}
</form>
```

***

### NewsletterUnsubscribe

Mit dieser Aktion wird ein Kunde vom Newsletter abgemeldet. Der Kunde gibt dabei seine E-Mail-Adresse an und kann optional einzelne Zielgruppen abwählen.

**Anwendungsbeispiel**\
Nutzbar auf der Abmeldeseite, auf der Kunden ihre E-Mail-Adresse eingeben und sich von einzelnen oder allen Newsletter-Zielgruppen abmelden können.

**Parameter**

| **Name**             | **Beschreibung**                                                    |
| -------------------- | ------------------------------------------------------------------- |
| `email`              | Die E-Mail-Adresse, die vom Newsletter abgemeldet werden soll.      |
| `targetGroupId.(id)` | Optionale Zielgruppen-ID, von der der Kunde abgemeldet werden soll. |

**Fehlercodes**

| **Fehlercode**     | **Beschreibung**                            |
| ------------------ | ------------------------------------------- |
| `missingEmail`     | Parameter `email` fehlt.                    |
| `emailCheckFailed` | Die angegebene E-Mail-Adresse ist ungültig. |

**Zugehörige Module, Variablen & Methoden**

* [\$wsNewsletter](/frontend/referenz/module/wsnewsletter)
* [\$wsNewsletter.getTargetGroups()](/frontend/referenz/module/wsnewsletter#\$wsnewsletter-gettargetgroups)

**Beispiel** das zeigt, wie ein Kunde seine E-Mail-Adresse eingibt und sich von einzelnen Zielgruppen abmeldet, inklusive Erfolgsausgabe.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{{ var $myActionNewsletterUnsubscribe = $wsActions.create('NewsletterUnsubscribe') }}
<form method="post" action="{{= $wsViews.current.url() }}">
    <input type="hidden" name="wscsrf" value="{{= $myActionNewsletterUnsubscribe.csrf }}">
    <input type="hidden" name="wsact" value="{{= $myActionNewsletterUnsubscribe.id }}">
    {{ if $cActionNewsletterUnsubscribe.success }}
        <div class="alert alert-success">Erfolgreich vom Newsletter abgemeldet.</div>
    {{ else }}
        <input type="email" name="email" value="{{= $myActionNewsletterUnsubscribe.params.email | ifNull('') }}">
        {{ foreach $group in $wsNewsletter.getTargetGroups() }}
            {{ if not $group.deactivated }}
                <input type="checkbox" name="targetGroupId.{{= $group.id }}" value="y">
                <label>{{= $group.name }}</label>
            {{ /if }}
        {{ /foreach }}
        <button type="submit">Vom Newsletter abmelden.</button>
    {{ /if }}
</form>
```

***

### NewsletterUnsubscribeConfirm

Mit dieser Aktion wird die Newsletter-Abmeldung per Double-Opt-In bestätigt. Der Kunde erhält nach der Abmeldung eine E-Mail mit einem Bestätigungslink, über den diese Aktion ausgelöst wird.

**Anwendungsbeispiel**\
Nutzbar auf der Bestätigungsseite, auf die der Kunde nach Klick auf den Opt-In-Link in der Abmelde-E-Mail weitergeleitet wird.

**Fehlercodes**

| **Fehlercode** | **Beschreibung**                               |
| -------------- | ---------------------------------------------- |
| `unauthorized` | Es wurde kein gültiger Opt-In-Token übergeben. |

**Zugehörige Module, Variablen & Methoden**

* [\$wsNewsletter](/frontend/referenz/module/wsnewsletter)

**Beispiel** das zeigt, wie nach erfolgreicher Bestätigung der Abmeldung eine Erfolgsmeldung angezeigt wird und bei einem ungültigen Token ein Fehlerhinweis erscheint.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{{ var $myActionNewsletterUnsubscribeConfirm = $wsActions.create('NewsletterUnsubscribeConfirm') }}
<form method="post" action="{{= $wsViews.current.url() }}">
    <input type="hidden" name="wscsrf" value="{{= $myActionNewsletterUnsubscribeConfirm.csrf }}">
    <input type="hidden" name="wsact" value="{{= $myActionNewsletterUnsubscribeConfirm.id }}">
    {{ if $cActionNewsletterUnsubscribeConfirm.success }}
        <div class="alert alert-success">Erfolgreich vom Newsletter abgemeldet.</div>
    {{ else }}
        <button type="submit">Abmeldung bestätigen.</button>
    {{ /if }}
</form>
```
