Skip to content

Massenversand


Der Massenversand für E-Mails (Bulk-Versand) bietet die Möglichkeit, aus einer Vorlage generierte, personalisierte Emails an Hunderte/Tausende von Empfänger zu senden. Die E-Mails können dabei - ähnlich wie bei einem Serienbrief in Word - auf die Daten der Empfänger zugreifen, . Im Gegensatz zum Serienbrief in Word kann der Massenversand aber ohne menschliches Eingreifen vollkommen automatisch durchgeführt werden.

Mögliche Anwendungsfälle:

  • Erinnerungs-E-Mail zu Kursbeginn an Teilnehmer
  • E-Mail mit Link zur Abgabe von Feedback nach Kursende
  • Internes Qualitäts-Management (E-Mail an Fachbereichsleiter, falls Workflow-Schritte oder andere Vorgaben nicht erfüllt sind)
  • Auswertungen (z.B. zu Anmeldezahlen)

Screenshot Email
Abbildung: Beispiel-Email zur Abgabe des Kurs-Feedbacks

Die E-Mails werden mit der Standard-E-Mail-Routine verarbeitet. Dies bringt folgende Vorteile mit sich:

  • Die E-Mails können an beliebige Empfänger aus der Datenbank des Kursverwaltungs-Programms geschickt werden, da Sie in einem konfigurierbaren SQL-Skript gesammelt werden.
  • Die E-Mails greifen auf das itm:CONNECT-Layout zu und gewährleisten ein einheitliches Design (CI).
  • Der Text und der grundsätzliche Aufbau der E-Mail kann ebenfalls frei konfiguriert werden.
  • Es können Links generiert werden, die zur Anbindung von erweiterer Funktionalität (Feedback, Wartelisten-Upgrade, usw.) genutzt werden können.
  • Die Jobs zum Massenversand können nachts durchgeführt werden, so dass während der Arbeitszeit keine aufwendigen Arbeiten den Server blockieren.

Konfiguration

Die Einstellungen, welche Massenversand-Jobs in welchen Zeitintervallen durchgeführt werden soll, kann im Konfigurations-Tool vhs.Connect.Webservice.Configuration.exe durchgeführt werden. Die Einstellungen befinden sich unter NotificationOptions->BulkNotifications:

Screenshot Konfiguration der Bulk-Jobs
Abbildung: Konfiguration der Bulk-Jobs

Pro Massen-Versand sind folgende Einstellungen erforderlich:

  • Name: Bezeichnung des Jobs
  • MailTemplate: Name des Mail-Templates, das den Aufbau der E-Mail anhält
  • SqlTemplate: Name des SQL-Templates
  • ChronExpression: Chron-Job-Ausdruck, der das zeitliche Intervall angibt, in dem der Job ausgeführt werden soll, z.B. 0 5 1 * *=> 5:00 Uhr am ersten Tag des Monats
  • Enabled: Aktiv

In den weiteren Eigenschaften können einige Experten-Einstellungen vorgenommen werden.

  • TestRun: Versand kann über die SQL-Variable @Top auf wenige Datensätze eingeschränkt werden. Außerdem kann die Email-Adresse auf einen festen Wert gesetzt werden. Diese Einstellungen werden aus TestRunOptions ausgelesen.
  • ValidationScript: Hier kann der Name eines C#-Skriptes angegeben werden, das zur Validierung der Empfänger-Datensätze verwendet werden kann. Der Dateiname des Skripts muss mit dem Präfix BulkValidation beginnen.

Sql-Templates

Die SQL-Templates für den Bulk-Mail-Versand befinden sich im Verzeichnis SqlTemplates\BulkNotifications.

Beispiel: Absage für Kurstermin (itm:MANAGER)

select @TOP
    adr.EMAIL as MailTo
    ,adr.ADRESSEN_ID as PersonId
    ,k.KURS_ID as CourseId
    ,anm.ANMELD_ID as DataContextId
    ,anm.ANMELD_ID as InternalRegistrationId
    ,convert(varchar,t.[START],104) as Date
    ,left(convert(varchar,t.[START],8),5) as StartTime
    ,left(convert(varchar,t.[END],8),5) as EndTime
    ,(case 
        when adr.GESCHLECHT='M' then 'Sehr geehrter Herr' 
        when adr.GESCHLECHT='F' then 'Sehr geehrte Frau' 
        else 'Guten Tag ' + adr.[VORNAME] end
    )  +' '+ adr.[NAME] as Salutation
from
    ANMELDUNG anm
    inner join KURS k on k.KURS_ID=anm.KURS_ID
    inner join ADRESSEN adr on adr.TEILN_ID=anm.TEILN_ID
    inner join TERMINE t on k.kurs_id=t.sid
@where 
    and anm.[STATUS]='Angemeldet' 
    and len(adr.EMAIL)>0
    and not exists (select * from EINWILLIGUNG e where e.[status]=0 and e.[TYP]='Terminabsage' and e.SID=adr.ADRESSEN_ID)
    and anm.KURS_ID = @CourseId and t.id = @DateId

Anmerkungen:

  • Das Skript kann beliebige Datensätze aus der Datenbank des Kursverwaltungs-Systems auslesen.
  • Es kann analog zur Vorgehensweise im Listendruck auf die Variablen @where und @top zugegriffen werden. @where bietet dem Programm die Möglichkeit, weitere Selektionskriterien an das Skript zu übergeben.
  • Die Variablen @CourseId und @DateId werden programmatisch übergeben. Bei einem regelmäßig ausgeführten Job sind derartige Angaben i.d.R. überflüssig.
  • Es gibt die Möglichkeit, ein PRE- und POST-Skript auszuführen. Die Arts des Skript wird über eine Namenskonvention abgeleitet.
  • Selektionskriterien für Listendruck können Spalten übergeben werden. Namenskonvention: __REP_FILTER_

Vergebene Spalten-Namen

Die folgenden Spalten erlauben, die Standard-Funktionalität per Datensatz zu ändern:

Feld Pflicht Funktion
MailTo ja Empfänger-Adresse
DataContextId ja ID des Datensatzes (z.B. der Anmeldung, des Kurses)
DataContextDescription nein Beschreibung von Datensatz für Protokoll-Mail
DueDate nein Versand-Datum
CustomMailTemplateName nein Vom Mail-Template aus den Bulk-Mail-Einstellugen abweichendes Mail-Template
CustomLogMailTemplateName nein Individuelles Mail-Template für Log-Mail
CustomLogMailTo nein Abweichender Empfänger der Protokoll-Mails
CustomLogGroupingKey nein Gruppierungs-Wert für Protokoll-Mail: Alle Datensätze mit dem gleichen Wert werden in einer Protokoll-E-Mail zusammengefasst.
ArchiveMailEnabled nein Konfigurationswert für Mail-Archivierung überschreiben
ArchiveMailCustomHeader nein Überschrift für Mail-Archiv-Eintrag anpassen
ArchiveMailCustomNote nein Notiz für Mail-Archiv-Eintrag anpassen
CourseId nein Falls hier eine Kurs-ID übergeben wird, steht im Mail-Template die vollständigen Kursdaten unter Model.Course zur Verfügung.
OrderId nein Wenn hier die OrderId der Bestellung übergeben wird, steht im Mail-Template der vollständige Bestellung unter Model.Order zur Verfügung.
VirtualOrderId nein Wenn hier die ANMELD_ID bzw. BELEG_ID einer normalen Anmeldung übergeben wird, wird ein virtuelles Order-Objekt erstellt und im Mail-Template unter Model.Order zur Verfügung gestellt.

Mail-Templates

Die Mail-Template unterscheiden von den normalen Mail-Templates, die bspw. beim Versand der Anmeldebestätigung verwendet werden, nur wenig.

Es kann allerdings über $!Model.Data.<Name> direkt auf alle Felder aus dem SQL-Skript direkt zugegriffen werden. Anbei ein Auschnitt aus einem Mail-Template, dass auf diese Weise die Anrede für den Empfänger einbaut:

<table class="row">
    <tr>
        <th class="small-12 large-12 first columns">
            #if ($!Model.Data.Salutation!="")
                <p>$Model.Data.Salutation,</p>
            #else
                <p>Sehr geehrter Teilnehmer,</p>
            #end

            #set($course = $Model.Course)
            <p>
                Sie haben bei uns den Kurs &quot;${course.Title}&quot; besucht. Ihre Meinung ist uns wichtig. Mit einer Rückmeldung würden Sie uns helfen, die Qualität unserer Angebote wie gewohnt weiterzuentwickeln.
            </p>

            <p>
                Bitte nehmen Sie sich kurz Zeit zum Ausfüllen des Feedbackbogens und lassen Sie uns diesen zukommen.
            </p>
        </th>
        <th class="expander"></th>
    </tr>
</table>    

Manueller (Test-)Versand

Ab Version 3.1.0 kann der Versand zusätzlich zur automatischen zeitgesteuerten Ausführung auch manuell über das Konfigurations-Tool angestoßen werden:

Screenshot Manueller Bulk-Mail-Versand
Abbildung: Manueller Bulk-Mail-Versand

Über die Checkbox "Testlauf" kann der Versand im Test-Modus ausgeführt werden. Dabei werden alle E-Mails an die angegebene E-Mail-Adresse geschickt. Die Anzahl der E-Mails kann dabei eingeschränkt werden, solange im zugehörigen SQL-Template die @TOP-Variable verwendet wird.

Abmeldung von automatischen Mail-Versand

Analog zur Abmeldung von einem Newsletter muss den Mail-Empfängern auch bei der Mail-Automation in den meisten Fällen die Möglichkeit geboten werden, sich von künftigen Mails abzumelden. Dazu muss der folgende Link in der E-Mail untergebracht werden:

``` html

Ich möchte keine Benachrichtigungen zu von mir gebuchten Veranstaltungen erhalten. Hier klicken.

```

Achtung: Der Aufbau des Links kann in Einzelfällen abweichen.

Über den Parameter topic wird gesteuert, von welcher Mail-Automation die Abmeldung erfolgen soll. Bei Abindung von KuferSQL wird hier die Kennung des Interessensgebiets, beim itm:MANAGER die Bzeichnung der Einwilligung eingetragen

Beim Klick wird die Abmelde-Seite der Homepage geöffnet und die Abmeldung automatisch im Kursverwaltungsprogramm vermerkt:

Screenshot Abmeldung vom Mails
Abbildung: Abmeldung von Mails in Kurs-Verwaltungs-Programm

In KuferSQL wird dazu im Newsletter-Bereich ein Interessengebiet pro Mail-Automation angelegt, das die Abmeldung von der Massen-E-Mail verkörpern soll. Im itm:MANAGER wird analog zu dieser Logik ein entsprechender Eintrag bei den Einwilligungen vermerkt.