> ## 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.

# E-Mails

> Welche E-Mails der Shop versendet, wie Absender, Betreff und Template je Mail eingestellt werden, wie PDF-Anhänge und SEPA-Mandate entstehen und wie der Versand über ein externes Mailsystem läuft.

Ein WEBSALE-Shop versendet rund zwanzig verschiedene E-Mails. Jede bekommt ihren eigenen Abschnitt in der `shop.config`, und fast alle folgen demselben Bauplan aus Absender, Betreff und Template.

Deshalb beginnt diese Seite mit genau diesem gemeinsamen Bauplan und mit dem Versand über ein externes Mailsystem, der für fast alle Abschnitte gilt. Danach folgen die E-Mails in der Reihenfolge, in der sie im Leben eines Kunden auftreten. Erst die Registrierung, dann die Bestellung, dann die Nachfassaktionen, zum Schluss Newsletter, frei definierbare Mails und die Meldungen an den Administrator.

Referenz: Shopkonfiguration shop.config, Übersicht aller Abschnitte

## Der gemeinsame Bauplan

Die meisten E-Mail-Abschnitte kennen dieselben vier bis fünf Parameter.

| Parameter | Zweck |
| - | - |
| `Allow` | E-Mail aktivieren. `yes` oder `no`, Standard `no` |
| `Subject-Txt` | Betreff |
| `SenderAddress` | Absenderadresse |
| `SenderName` | Absendername |
| `Template` | HTML-Template der E-Mail |

In den folgenden Abschnitten wird nur noch aufgeführt, was von diesem Bauplan abweicht.

Nicht jeder Abschnitt hat ein `Allow`. Die E-Mails zum Double-OptIn-Verfahren, zum Passwort und zur Produktempfehlung werden durch die jeweilige Funktion ausgelöst, nicht durch einen eigenen Schalter.

## Versand über ein externes Mailsystem

Viele Abschnitte können den Versand an ein externes Mailsystem abgeben. Unterstützt wird derzeit Inxmail Commerce.

| Parameter | Zweck | Werte |
| - | - | - |
| `UseExternMailSystem` | welches Mailsystem versendet | `no`, `InxMail`, `InxMail_test`. Standard: `no` |
| `ExternMailTemplate` | Template für das externe System | Dateiname, beispielsweise `customer_mail.inxmail` |

`no` verwendet die WEBSALE-Standard-E-Mail. `InxMail` gibt den Versand an Inxmail ab und verwendet dafür das Template aus `ExternMailTemplate`. `InxMail_test` tut dasselbe, aber nur im Testmodus des Shops. Im Livebetrieb greift dann wieder die Standard-E-Mail.

> [!WARNING]
>
> Bleibt `ExternMailTemplate` leer, schaltet der Kernel das externe Mailsystem stillschweigend ab und versendet über die WEBSALE-Standard-E-Mail. Es erscheint keine Fehlermeldung.
>
> Dasselbe passiert bei einem Tippfehler in `UseExternMailSystem`. Jeder Wert, der kein bekanntes Mailsystem benennt, wirkt wie `no`.
>
> Prüfen Sie nach einer Umstellung deshalb immer, ob tatsächlich über das externe System versendet wird.

Wegweiser: Shop-E-Mails über Inxmail Commerce versenden

## Registrierung und Kundenkonto

### `RegistrationMail`

Begrüßungs-E-Mail nach der ersten Registrierung im Shop. Kennt den gemeinsamen Bauplan einschließlich `Allow` sowie `UseExternMailSystem` und `ExternMailTemplate`.

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<RegistrationMail>
   Allow         = yes
   Subject-Txt   = Willkommen in unserem Shop
   SenderAddress = shop@mein-shop.de
   SenderName    = Mein Shop
   Template      = mail_registration.htm
</RegistrationMail>
```

### `NewCustomerMail`

E-Mail an Neukunden. Kennt den gemeinsamen Bauplan einschließlich `Allow`, aber **kein** externes Mailsystem.

### `NewCustomerDoubleOptInMail`

Bestätigungs-E-Mail bei der Neukundenanmeldung, wenn das Double-OptIn-Verfahren mit **zwingender** Bestätigung der E-Mail-Adresse aktiv ist. Kennt den gemeinsamen Bauplan ohne `Allow`, dazu `UseExternMailSystem` und `ExternMailTemplate`.

### `CustomerVoluntaryDoubleOptInMail`

Dasselbe für die **freiwillige** Bestätigung der E-Mail-Adresse. Gleiche Parameter.

### `ChangeEmailDoubleOptInMail`

Bestätigungs-E-Mail beim Ändern der E-Mail-Adresse im Kundenkonto. Gleiche Parameter.

### `DeleteAccountDoubleOptInMail`

Bestätigungs-E-Mail für die Funktion "[Kundenkonto löschen](https://dokumentation.websale.de/v8s/kundenkonto/anmeldung-registrierung.md#kundenkonto-loschen)". Gleiche Parameter.

### `SetPasswordMail`

E-Mail der Funktion "Passwort vergessen" beziehungsweise "Passwort neu setzen". Kennt den gemeinsamen Bauplan ohne `Allow`, dazu `UseExternMailSystem` und `ExternMailTemplate`.

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<SetPasswordMail>
   Subject-Txt   = Ihr neues Passwort
   SenderAddress = shop@mein-shop.de
   SenderName    = Mein Shop
   Template      = mail_set_password.htm
   RateLimit     = 5
</SetPasswordMail>
```

| Parameter | Zweck | Werte |
| - | - | - |
| `RateLimit` | wie viele Passwort-Mails je Zeitraum zugelassen sind | Zahl ab 1. Standard: 5 |

> [!NOTE]
>
> Werte unter 1 werden stillschweigend auf 5 gesetzt.

## Bestellung

### `CustomerMail`

Die Bestelleingangsbestätigung an den Käufer. Der umfangreichste E-Mail-Abschnitt, weil hier auch die PDF-Anhänge und die SEPA-Mandate konfiguriert werden.

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<CustomerMail>
   Allow           = yes
   Subject-Txt     = Ihre Bestellung bei Mein Shop
   SenderAddress   = shop@mein-shop.de
   SenderName      = Mein Shop
   Template        = mail_customer_order.htm
   AttachPDF-Allow = yes
   PDFTemplate     = pdf_order.htm
   PDFFileName     = Bestellung_~WS-OrderID~.pdf
   <+Attachment>
      Name = AGB.pdf
      File = deutsch/pdfs/agb.pdf
   </+Attachment>
</CustomerMail>
```

#### Bestelldetails als PDF-Anhang

| Parameter | Zweck | Werte |
| - | - | - |
| `AttachPDF-Allow` | Bestelldetails als PDF anhängen | `yes`, `no` |
| `PDFTemplate` | HTML-Template, das in das PDF umgewandelt wird | Templatename |
| `PDFFileName` | Dateiname des Anhangs. Unterstützt das Tag `WS-OrderID` | beispielsweise `Bestellung_~WS-OrderID~.pdf` |

#### Weitere Dateianhänge

Bis zu fünf `+Attachment`-Unterabschnitte hängen feste Dateien an, beispielsweise AGB oder Widerrufsbelehrung.

| Parameter | Zweck |
| - | - |
| `File` | anzuhängende Datei, relativ zum Templateverzeichnis |
| `Name` | optionaler Dateiname, unter dem der Anhang beim Käufer ankommt |

Fehlt `Name`, wird der Dateiname aus `File` abgeleitet. Aus `deutsch/12345.pdf` wird dann der Anhang `12345.pdf`.

> [!WARNING]
>
> Der Pfad in `File` muss **relativ zum Templateverzeichnis** angegeben werden. Liegt die Datei unter `/benutzer/templates/deutsch/pdfs/agb.pdf`, lautet der Wert `deutsch/pdfs/agb.pdf`.
>
> Pfade, die aus dem Templateverzeichnis herausführen, werden vom Kernel geprüft und der Anhang still verworfen. Es erscheint keine Fehlermeldung, die E-Mail geht ohne diesen Anhang raus.

Ein Kaufgutschein lässt sich nicht als PDF-Anhang mitschicken. Er steht nur über einen Download-Link zur Verfügung, entweder in der Bestelleingangsbestätigung oder in der Bestellhistorie des Kundenkontos.

#### SEPA-Mandate

| Parameter | Zweck | Standard |
| - | - | - |
| `SEPACustomerPDFTemplate` | Template des Mandats für die SEPA-Basislastschrift | `pdf_sepa_customer.htm` |
| `SEPACustomerPDFFileName` | Dateiname dieses Mandats | siehe Hinweis unten |
| `SEPACompanyPDFTemplate` | Template des Mandats für die SEPA-Firmenlastschrift | `pdf_sepa_company.htm` |
| `SEPACompanyPDFFileName` | Dateiname dieses Mandats | siehe Hinweis unten |

> [!WARNING]
>
> Lassen Sie alle vier Parameter leer, werden für das SEPA-Lastschriftverfahren **weder Mandatsnummern generiert noch PDF-Anhänge erstellt und versendet**. Das ist der vorgesehene Weg, die Funktion abzuschalten.

Als Rückfallwert für den Firmenmandats-Dateinamen steht im Kernel schlicht `SEPA-DirectMandate.pdf`, nicht `SEPA-DirectMandate_~BANK-IBAN~_~WS-OrderID~.pdf`. Verlassen Sie sich nicht auf den Standard, sondern tragen Sie den gewünschten Dateinamen ein.

Für Kopf- und Fußzeilen der beiden Mandats-PDFs liest der Kernel acht weitere Parameter.

| Parameter | Zweck |
| - | - |
| `SEPACustomerPDFHeaderURL`, `SEPACompanyPDFHeaderURL` | URL der Kopfzeile |
| `SEPACustomerPDFFooterURL`, `SEPACompanyPDFFooterURL` | URL der Fußzeile |
| `SEPACustomerPDFHeaderMargin`, `SEPACompanyPDFHeaderMargin` | Abstand der Kopfzeile zum Seitenrand |
| `SEPACustomerPDFHeaderSpacing`, `SEPACompanyPDFHeaderSpacing` | Abstand der Kopfzeile zum Inhalt |
| `SEPACustomerPDFFooterMargin`, `SEPACompanyPDFFooterMargin` | Abstand der Fußzeile zum Seitenrand |
| `SEPACustomerPDFFooterSpacing`, `SEPACompanyPDFFooterSpacing` | Abstand der Fußzeile zum Inhalt |

Die vier Abstandsparameter je Mandatsart werden nur ausgewertet, wenn die zugehörige URL gefüllt ist.

### `MerchantOrderMail`

Die Bestelleingangs-E-Mail an den Händler.

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<MerchantOrderMail>
   Allow         = yes
   Address       = bestellungen@mein-shop.de,lager@mein-shop.de
   Subject-Txt   = Neue Bestellung ~OrderNumber~ von ~FirstName~ ~LastName~
   SenderAddress = shop@mein-shop.de
   SenderName    = Mein Shop
   Template      = mail_merchant_order.htm
</MerchantOrderMail>
```

| Parameter | Zweck | Werte |
| - | - | - |
| `Address` | Empfänger. Mehrere Adressen kommasepariert | E-Mail-Adressen |

Im Betreff stehen fünf lokale Tags zur Verfügung.

| Tag | Ausgabe |
| - | - |
| `FirstName` | Vorname |
| `LastName` | Nachname |
| `OrderNumber` | Bestelleingangskennung |
| `ShopID` | ShopID |
| `SubShopID` | SubShopID |

### `OrderInfoMail`

Info-E-Mails, die über die SOAP-V2-Schnittstelle ausgelöst werden.

| Parameter | Zweck | Werte |
| - | - | - |
| `BCC-Address` | Adresse für eine Blindkopie. Mehrere kommasepariert | E-Mail-Adressen |

Alles Übrige entspricht dem gemeinsamen Bauplan einschließlich `Allow`.

## Nachfassen und Erinnern

### `OrderNowMail`

Die BackInStockMail, früher OrderNow-Service. Sie benachrichtigt registrierte Kunden, sobald ein Produkt wieder verfügbar ist.

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<OrderNowMail>
   Allow         = yes
   Subject-Txt   = ~PR-Name~ ist wieder verfügbar
   SenderAddress = shop@mein-shop.de
   SenderName    = Mein Shop
   Template      = mail_ordernow.htm
   Referer       = backinstock
   SubReferer    =
</OrderNowMail>
```

| Parameter | Zweck | Werte |
| - | - | - |
| `Referer` | optionaler Referer, der an den Produktlink angehängt wird | Text |
| `SubReferer` | optionaler SubReferer, der an den Produktlink angehängt wird | Text |

Im Betreff stehen diese lokalen Tags zur Verfügung.

| Tag | Ausgabe |
| - | - |
| `A-E-Mail` | E-Mail-Adresse |
| `A-FirstName` | Vorname |
| `A-LastName` | Nachname |
| `A-Salutation` | Anrede, beispielsweise Frau |
| `A-CompleteSalutation` | vollständige Anrede, beispielsweise Sehr geehrte Frau Mustermann |
| `PR-Name` | Produktname |
| `PR-Number` | Artikelnummer |
| `DeepLink` | allgemeiner Direktlink |
| `PR-DeepLink` | Direktlink zum Produkt |

Die beiden Referer-Parameter machen in der Auswertung sichtbar, wie viele Bestellungen aus diesen Benachrichtigungen entstehen.

### `RateRemindMail`

Bewertungserinnerungen per E-Mail. Kennt den gemeinsamen Bauplan einschließlich `Allow`.

> [!WARNING]
>
> Für die Bewertungserinnerung kann nur ein Template aus dem Subshop-Ordner des jeweiligen Subshops verwendet werden. Das Template muss also für jeden Subshop einzeln angelegt und hier eingetragen werden.

### `ProdRecmdMail`

E-Mail der Funktion "Produkt weiterempfehlen". Kennt nur `Template` sowie `UseExternMailSystem` und `ExternMailTemplate`. Absender und Betreff ergeben sich aus der Funktion selbst.

### `WishListMail`

E-Mail zum Versenden einer Wunschliste. Kennt ausschließlich `Template`.

### `SendUploadLinkMail`

E-Mail mit den Links zum Upload-Modul. Kennt den gemeinsamen Bauplan ohne `Allow`, dazu `UseExternMailSystem` und `ExternMailTemplate`. `SenderName` ist optional.

> [!WARNING]
>
> Der Inhalt dieses Templates geht an eine vom Kunden selbst angegebene E-Mail-Adresse. Achten Sie aus Datenschutzgründen darauf, welche Daten Sie dort ausgeben.

## `+Newsletter`

Ermöglicht die Anmeldung zum Newsletter während des Bestellablaufs. Je Zielgruppe beziehungsweise Newsletter-Liste wird ein eigener `+Newsletter`-Abschnitt angelegt.

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<+Newsletter>
   Allow            = yes
   Name-Txt         = Unser wöchentlicher Newsletter
   Checkbox         = off
   NewsletterID     = 1
   GroupID-List     = 12,15
   NotificationMode = order
   Type             = WSNewsletterV3
</+Newsletter>
```

| Parameter | Zweck | Werte |
| - | - | - |
| `Allow` | Eintrag aktiv. Bei `no` erscheint die Auswahl gar nicht | `yes`, `no`. Standard: `no` |
| `Name-Txt` | frei wählbarer Name des Newsletters | Text |
| `Checkbox` | Vorbelegung der Checkbox | `on`, `off`. Standard: `on` |
| `NewsletterID` | eindeutige Kennung für Klammerungen im Template | Zahl |
| `GroupID-List` | Zielgruppen-Indexwerte aus dem E-Marketing-Manager | Zahlen, kommasepariert |
| `NotificationMode` | wann die Registrierung ausgelöst wird | `order`, `immediate`. Standard: `order` |
| `Type` | Newsletter-Typ | `WSNewsletter`, `WSNewsletterV3`, `MailTemplate`. Standard: `WSNewsletter` |
| `Template` | E-Mail-Template, nur bei `Type = MailTemplate` nötig | Templatename |
| `ListServerAddress` | Subscribe-Adresse des Newsletters | Adresse |

`NotificationMode = order` startet die Registrierung mit der Bestellgenerierung, `immediate` schon beim Seitenwechsel.

`ListServerAddress` wird nur beim WEBSALE Newsletter V1 und bei externen Anbietern gebraucht, die eine solche Adresse unterstützen.

> [!WARNING]
>
> Ändert sich der Name einer Zielgruppe im E-Marketing-Manager, muss `Name-Txt` hier ebenfalls angepasst werden. Die beiden Stellen werden nicht automatisch abgeglichen.
>
> Die datenschutzkonforme Einstellung für `Checkbox` ist `off`, auch wenn der Standard `on` lautet.

Zusätzlich kennt der Abschnitt `UseExternMailSystem` und `ExternMailTemplate`.

## `GenericEmails`

Für alles, was keinen eigenen Abschnitt hat. Je E-Mail ein `+Entry`-Unterabschnitt, maximal 20 Stück.

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<GenericEmails>
   <+Entry>
      ID            = ruecksendung
      Address       = retouren@mein-shop.de
      Subject-Txt   = Rücksendung angemeldet
      SenderAddress = shop@mein-shop.de
      SenderName    = Mein Shop
      Template      = mail_ruecksendung.htm
   </+Entry>
</GenericEmails>
```

| Parameter | Zweck | Werte |
| - | - | - |
| `ID` | eindeutige Kennung der Benachrichtigung | Zeichen und Ziffern |
| `Address` | Empfänger. Mehrere kommasepariert | E-Mail-Adressen |
| `Subject-Txt` | Betreff | Text |
| `SenderAddress` | Absenderadresse | E-Mail-Adresse |
| `SenderName` | Absendername | Text |
| `Template` | E-Mail-Template | Templatename |
| `UseIndividualRecipientAddress` | Empfänger zur Laufzeit bestimmen statt aus `Address` | `yes`, `no`. Standard: `no` |

> [!WARNING]
>
> `UseExternMailSystem` und `ExternMailTemplate` liest der Kernel bei diesem Abschnitt **nicht** aus dem einzelnen `+Entry`, sondern aus der Ebene darüber, also direkt unterhalb von `GenericEmails`. Eine Angabe innerhalb von `+Entry` bleibt wirkungslos, und die Einstellung gilt dann für alle Einträge gemeinsam.
>
> Ob das beabsichtigt ist oder ein Fehler im Kernel, ist noch zu klären. Setzen Sie die beiden Parameter bis dahin auf Abschnittsebene.

## `ShopAdminMail`

Meldungen zu Problemen im laufenden Shopbetrieb an den Shopadministrator.

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<ShopAdminMail>
   Allow   = yes
   Address = admin@mein-shop.de,technik@mein-shop.de
</ShopAdminMail>
```

| Parameter | Zweck | Werte |
| - | - | - |
| `Allow` | Versand wichtiger Meldungen aktivieren | `yes`, `no`. Standard: `no` |
| `Address` | Empfänger. Mehrere kommasepariert | E-Mail-Adressen |

Dieser Abschnitt hat weder Betreff noch Template. Beides gibt der Shop vor.

## Weitere E-Mail-Abschnitte

Diese E-Mails gehören thematisch zu anderen Funktionen und sind dort beschrieben.

| Abschnitt | Gehört zu |
| - | - |
| `BestPrice-PreorderMail`, `BestPrice-OrderErrorMail` | BestPrice-Order-Modul |
| `ProductsInAction-Mail` | Products In Action |
| `Subscription` mit seinen vier Mail-Unterabschnitten | [Abo-Modul](https://dokumentation.websale.de/v8s/marketing-funktionen/abo-modul.md) |


## Related topics

- [E-Mails & E-Mail Einstellungen](https://dokumentation.websale.de/konfiguration/e-mails-e-mail-einstellungen.md)
- [Benutzerdefinierte E-Mails](https://dokumentation.websale.de/v8s/e-mails/benutzerdefinierte-e-mails.md)
- [$wsEmails - E-Mails](https://dokumentation.websale.de/frontend/referenz/module/wsemails.md)
- [messages - Ereignisgesteuerte E-Mails](https://dokumentation.websale.de/konfiguration/messages-ereignisgesteuerte-e-mails.md)
- [actions -  Fehlertexte & E-Mails](https://dokumentation.websale.de/konfiguration/actions-fehlertexte-e-mails.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.