Günny: individueller Mail-Link mit Serienbrief in Word erstellen?

Hallo liebe Expert:innen

ich würde gerne einen Serienbrief an alle meine Kunden schicken (Anrede, Name, Vorname und Mail geht aus einer Excelliste hervor). In dieser Rundmail stelle ich ein neues Produkt aus unserem Hause vor. Um die Hemmschwelle einer Rückmeldung so gering wie möglich zu halten würde ich gerne folgendes im Text der Mail schreiben wollen: [... Sofern Sie Interesse oder Fragen haben, klicken Sie einfach auf diesen Link - ich werde mich dann mit Ihnen in Verbindung setzen. ...] Sobald der Kunde dann auf den Link klickt, löst er damit eine Mail aus, in der dann einfach nur die drei Parameter aus der Excelliste an meine eigene Mailadresse gesendet wird.

Ist das möglich?

In PHP könnte ich mir sowas relativ einfach stricken, nur dann sieht die Mail halt nicht so hübsch aus, wie ich sie in Word inkl. Bilder erstellen kann.

Kann ich also mit der Serienbrief-Erstellung aus Word nicht nur die Ansprache mit individuellen Feldern belegen, sondern auch diese Mailmöglichkeit per Klick erzeugen? Jeder Link hat dann ja die individuellen Felder enthalten. Wenn ja, wäre ich über näher Infos dazu sehr dankbar.

Besten Gruß

Günny

  1. Hallo Günny,

    was konkret in Word geht, weiß ich nicht.

    Was ich weiß: Mit einem mailto: Link kannst Du über Parameter einiges steuern, was in der Mail erscheinen soll.

    Guckst Du hier

    Da es um eine Mail geht, die an Dich zurückgemeldet wird, muss diese Mail ja auch nicht schön, bunt und marketing-optimiert sein. Oder?

    Wenn Du PHP zur Verfügung hast, musst Du auch nicht zwingend eine Mail erzeugen. Workflowsteuerung per Mail ist beliebt, aber nicht unbedingt effizient.

    Du kannst eine Service-URL aufrufen, hinter der ein PHP Script die Daten verarbeitet.

    https://example.com/mailingreply.php?mailingid=4711&customerid=12345&foo=2&bar=9

    Diese URL klickt der Empfänger der Mail an und könnte dann von dem mailingreply.php Script eine "Danke schön" Seite angezeigt bekommen. Das Script macht beim Aufruf einen DB-Eintrag in deiner "Kundenantwort" Tabelle, die Du dann einfach abfragen und abarbeiten kannst.

    Rolf

    --
    sumpsi - posui - obstruxi
    1. Hallo Rolf,

      herzlichen Dank für Deine Denkanstöße. Mailto hilft mir in diesem Moment nicht weiter, da ich damit ja nur sein Mailprogramm öffne, er dann aber selbst noch mehr machen muss. Die Hürde soll halt wirklich maximal nur ein Klick sein :)

      Dein zweiter Ansatz hat mir aber sehr gefallen. Ich könnte auf eine URL verweisen, mit der ich die Daten des Kunden in einer Datenbank ablege und eine einfache Bestätigung wie z.B. "Vielen Dank - ich melde mich innerhalb der nächsten 48 Stunden bei Ihnen" ausgebe.

      In diesem Fall müsste ich dann ja die URL mit individuellen Parametern des Kunden aufrufen. (url.de/check.php&&name=fritz&&addy=fritz@web.de) Dieser Text sieht jedoch innerhalb der Mail nicht wirklich hübsch aus. In Word kann ich ja auch auf einem Wortlaut z.b. LINK einen Rechtsklick tätigen und einen Hyperlink einrichten, sodass der Kunde halt am Ende wirklich nur "Link" sieht und nicht die ellenlange URL-Adresse. Aber wie kann ich dies innerhalb eines Serienbriefes umsetzen? Es ist ja keine feste URL, sondern mit jedem Brief werden ja individuelle Kundendaten in den Hyperlink gestellt. Geht das überhaupt?

      Beste Grüße Günny

      1. Hallo Günny,

        Dieser Text sieht jedoch innerhalb der Mail nicht wirklich hübsch aus.

        Wieso das?

        Du schickst doch sicherlich eine HTML Mail, in der so etwas wie

        <a href="https://example.org/buy_freezer.php?name=fritz&konto=DE1234567">
           Bitte senden Sie mir mehr Informationen
        </a>
        

        steht. Der Kunde sieht nur den Klartext, die URL bekommt er je nach Mailprogramm nur zu Gesicht, wenn er über dem Link hovert.

        Allerdings solltest Du Dir noch über die URL-Parameter Gedanken machen. Ein böser Mailempfänger könnte anfangen, Parametervariationen auszuprobieren, um auf diese Weise Schabernack anzurichten.

        Einfache Lösung: Denk Dir einen geheimen Key aus, nicht zu kurz. Am besten pro Mailing einen eigenen. Wenn Du die Mail erzeugst, integriere in die URL einen signatur-Parameter, für den Du die Kundendaten sowie deinen geheimen Key hashst. Nicht md5 bitte, das ist zu kurz, PHP hat da kryptographisch besseres zu bieten. Eine Prise Salz ist auch nicht zu verachten. Wenn Du je Mailing eigene Keys verwendest, sollte die URL auch noch einen Parameter mit der Mailing-ID enthalten, damit Du weißt, welchen (intern bei Dir gespeicherten) Key Du verwenden musst.

        Wenn der Kunde dann auf den Link klickt, kannst Du die erhaltenen Parameter erneut hashen und prüfen, ob sie mit dem Signatur-Parameter übereinstimmen.

        Kompliziertere Lösung:** Generiere für jede Mail, die Du versendest, einen kryptographisch sicheren Zufallswert (PHP: Funktion random_bytes) und erzeuge einen genügend langen Hash (hash("sha256", $data) liefert z.B. 64 Stellen). Diesen Hash verwendest Du als Schlüssel für einen Datenbanksatz, in dem Du dann die Daten speicherst, die Du derzeit noch an die URL anhängen möchtest. Vorsicht dabei: Eine Hash-Kollision ist sehr unwahrscheinlich, aber nicht unmöglich. D.h. der Insert in die Tabelle kann auf einen duplicate key laufen, und dann musst Du es mit einem anderen Zufallswert erneut versuchen.

        Die URL, die Du in die Mail setzt, bekommt nur den Hash. Klickt der Kunde den Link, kannst Du über den Hash die Kundendaten aus der Datenbank lesen. Durch den langen Hash-Wert ist es nicht unmöglich, aber SEHR unwahrscheinlich, dass irgendwer per Durchprobieren einen anderen gültigen Hash findet. Für weitere Verwirrung der Hacker kannst Du sorgen, indem deine Antwortseite grundsätzlich immer "Danke schön, wir melden uns bei Ihnen" ausgibt, egal ob der Hash gültig war oder nicht.

        Ein solcher Link sieht dann auch nicht allzu schlimm aus:

        Lieber Kunde, wenn Sie weitere Informationen möchten, folgen Sie diesem Link:
        https://example.com/buy_freezer.php?ref=f25a5473b85a5e35de2b80872f8e297b374e7de95e2cde31edd90828250c0ddd

        Die Datenbanktabelle kannst Du dann auch gleich verwenden, um statistische Daten über Rücklaufquoten zu sammeln.

        So, und ich hoffe, das sind wirklich KUNDEN von Dir, für die Du eine Kontakterlaubnis hast, und nicht der Plan für eine Spam-Kampagne.

        Rolf

        --
        sumpsi - posui - obstruxi
        1. Lieber Rolf,

          das mit dem Hashing ist eine Krücke. Sinnvoller wäre es, wenn das PHP-Script eine Liste (z.B. aus einer Datenbank) führt, in der pro Listeneintrag die benötigten Kundendaten und das beworbene Produkt (samt Datum, Werbeaktion etc.) hinterlegt sind. Im Link wird dann nur noch die laufende Nummer des Listeneintrags als Parameter geführt:

          1. Kunde_xyz | Produkt_ID | 2023-06-12
          2. Kunde_abc | Produkt_ID | 2023-07-01

          In der Mail steht dann nur noch das hier:

          <p>
            Erhalten Sie
            <a href="https://example.com/ad.php?id=125">
              eine Info-Mail mit weiteren Produktdetails
            </a>
            zu dieser Werbeaktion.
          </p>
          

          Liebe Grüße

          Felix Riesterer

          1. Schönen guten Morgen, lieber Felix,

            Im Link wird dann nur noch die laufende Nummer des Listeneintrags als Parameter geführt:

            Nein, eben nicht. Links kann man manipulieren und damit könnte man problemlos Aktionen für andere auslösen. Der Hash hat, wie eine PHP Session-ID, den Sinn, einen nicht erratbaren Schlüssel einzusetzen.

            Bei näherem Nachdenken: wenn man nur den Code in den Link setzt, muss es auch kein Hash sein, es könnten auch einfach 32 random_bytes generiert und als 64-stelliger Hex-String verwendet werden. Oder 33 Bytes, die base64-codiert zu 44 Zeichen werden - wie auch immer. Aber keine fortlaufende Nummer. Das eröffnet dem Schabernack zu viele Möglichkeiten.

            Rolf

            --
            sumpsi - posui - obstruxi
            1. Lieber Rolf,

              Das eröffnet dem Schabernack zu viele Möglichkeiten.

              welche da wären? Es erhalten im Zweifel Kunden eine Mail, die sie nicht angefordert haben. Und ja, man kann von einer Ganzzahl als Parameter auf einen Hash umsteigen, der „irgendwie“ diese Ganzzahl verschleiert. Kommt darauf an, was man genau absichern will.

              Liebe Grüße

              Felix Riesterer

              1. Das eröffnet dem Schabernack zu viele Möglichkeiten.

                welche da wären? Es erhalten im Zweifel Kunden eine Mail, die sie nicht angefordert haben. Und ja, man kann von einer Ganzzahl als Parameter auf einen Hash umsteigen, der „irgendwie“ diese Ganzzahl verschleiert. Kommt darauf an, was man genau absichern will.

                Die unautorisierte Mail zu verhindern ist alleine schon Grund genug, das abzusichern.

          2. Hi,

            das mit dem Hashing ist eine Krücke. Sinnvoller wäre es, wenn das PHP-Script eine Liste (z.B. aus einer Datenbank) führt, in der pro Listeneintrag die benötigten Kundendaten und das beworbene Produkt (samt Datum, Werbeaktion etc.) hinterlegt sind. Im Link wird dann nur noch die laufende Nummer des Listeneintrags als Parameter geführt:

            nein, das wäre nicht sinnvoller.

            Denn damit kann man die Daten durch einfaches Hochzählen des Parameters abrufen. Der Hash sorgt dafür, daß das nicht so einfach geht - man hätte viele Fehlversuche, bis man zufällig mal wieder einen gültigen Wert trifft.

            cu,
            Andreas a/k/a MudGuard

            1. Lieber MudGuard,

              in diesem speziellen Fall bekommt das Script-Kiddie keine Daten zu sehen, sondern löst nur eine Mailzustellung aus, von der es nichts selbst mitbekommt - es sei denn, es verwendet genau den Parameter, den es selbst in der Werbemail mitgeteilt bekommen hat.

              Liebe Grüße

              Felix Riesterer

              1. in diesem speziellen Fall bekommt das Script-Kiddie keine Daten zu sehen, sondern löst nur eine Mailzustellung aus, von der es nichts selbst mitbekommt - es sei denn, es verwendet genau den Parameter, den es selbst in der Werbemail mitgeteilt bekommen hat.

                Wenn Du es einem Bot leicht machst, Deinen Server als Mailschleuder zu verwenden, dann hast Du potentiell ein Problem. Ob das dem Bot/Betreiber dabei irgendwie weiterbringt, ist dabei irrelevant.