Ergebnis 1 bis 5 von 5

Thema: [gelöst] NotificationCenter: Subject & Mail Body

  1. #1
    Contao-Nutzer Avatar von a-v-l
    Registriert seit
    20.09.2013.
    Ort
    Freiburg im Breisgau
    Beiträge
    88

    Standard [gelöst] NotificationCenter: Subject & Mail Body

    Hallo zusammen,

    ich schreibe gerade eine kleine Erweiterung, bei der sämtliche Mitglieder einer Webseite einmal im Jahr per Mail (NotificationCenter) abgefragt werden, ob sie weiterhin als Mitglied geführt werden wollen. Dazu erstelle ich ein Double Opt-In Tolken, der dann per Link bestätigt werden kann. Funktioniert soweit alles gut.

    Gerne würde ich allerdings den Betreff und den Mail-Text im Opt-In speichern. Also:

    PHP-Code:
    $optIn->emailSubject $subject;
    $optIn->emailText $body
    Ist es irgendwie möglich, beim Senden der Nachrichten an die geparsten Inhalte (subject & mail body) zu kommen?

    PHP-Code:
    while ($objNotificationCollection->next()) {
        
    $objNotification $objNotificationCollection->current();
        
    $msgs    $objNotification->getMessages(); // Liefert zwar die Nachrichten, aber keine Inhalte
        
    $subject $objNotification->getSubject();  // Gibt es nicht, hätte ich aber gerne! :-)
        
    $body    $objNotification->getBody();     // Gibt es auch nicht
        
    $objNotification->send($arrTokens);         // return-Wert: bool

    Danke für nützliche Hinweise und Anregungen!
    Geändert von a-v-l (13.10.2023 um 11:57 Uhr)

  2. #2
    Contao-Urgestein Avatar von fiedsch
    Registriert seit
    09.07.2009.
    Ort
    München
    Beiträge
    2.943

    Standard

    Wenn ich es richtig in Erinnerung habe, setzt Du nicht das Subject derNotification, sondern ein entsprechendes "SimpleToken", das Du dann im Backend bei der Konfiguration der Notification verwenden kannst.

    Entsprechend https://github.com/terminal42/contao...onfig.php#L106 könntest Du z.B. eine entsprechende form_* Variable (z.B. form_subject) setzen, die Du beim Trägern der Notification zusammen mit den anderen Daten (für die variablen Textbausteine) in $arrTokens übergibts.

    PHP-Code:
    $objNotification->send($arrTokens$strLanguage); 
    Contao-Community-Treff Bayern: http://www.contao-bayern.de

  3. #3
    Contao-Nutzer Avatar von a-v-l
    Registriert seit
    20.09.2013.
    Ort
    Freiburg im Breisgau
    Beiträge
    88

    Standard

    Ja, die "SimpleTokens" bzw. hier $arrTokens übergebe ich an verschiedene Felder der Nachricht: "email_subject", "email_text", etc. Ich möchte aber die geparsten Inhalte der Nachricht verwenden.

    In "email_text" habe ich z.B. das SimpleToken "vorname". In der Nachricht steht dann z.B. "Hallo ##vorname##, wie geht's?". Das gebe ich unter "Benachrichtigungen/MeineNachrichtentyp/MeineNachricht/Deutsch" in den "Rohtext" ein.

    Wenn ich die Nachricht nun per Cron verschicke, möchte ich dort den Rohtext="Hallo John, wie geht's?" haben.

    Anybody?

  4. #4
    Contao-Urgestein Avatar von cliffparnitzky
    Registriert seit
    08.10.2010.
    Ort
    Lüneburg
    Beiträge
    2.451
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Das macht das NC doch von allein.

    Stell ein Token ##vorname## zur Verfügung und pack das mit z.B. John in das Token Array.

  5. #5
    Contao-Nutzer Avatar von a-v-l
    Registriert seit
    20.09.2013.
    Ort
    Freiburg im Breisgau
    Beiträge
    88

    Standard

    Nach ein paar Tauchgängen in den Tiefen des Noticication Centers mit wunderbarer Hilfe durch VSC und PHP Intelephense habe ich eine Möglichkeit gefunden, die geparste Nachricht in meine Cron-Klassen-Methode zu bekommen:

    PHP-Code:
    if (null !== $objNotificationCollection) {
        
    $objNotification $objNotificationCollection[0];    // Es gibt nur EINE Benachrichtigung von diesem Typ
        
    $msg $objNotification->getMessages();              // Es gibt auch nur EINE Nachricht

        /** @var Gateway $objGatewayModel */
        
    $objGatewayModel $msg->getRelated('gateway');
        
    $mail = new \NotificationCenter\Gateway\Email($objGatewayModel);
        
    $objDraft $mail->createDraft($msg[0], $arrTokens); // Typ: EmailMessageDraft

        // Die Klasse EmailMessageDraft verfügt über eine Vielzahl von get-Methoden um die geparsten Inhalte auszugeben:
        
    $myEmailSubject $objDraft->getSubject();
        
    $myEmailTextBody $objDraft->getTextBody();

    Vielleicht kann ja jemensch was damit anfangen!

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 2 (Registrierte Benutzer: 0, Gäste: 2)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •