﻿<?php
  $wsdlUrl = ""; //Die URL Ihrer Schnittstelle

  //SoapClient erzeugen
  $client = new SoapClient($wsdlUrl);

  //Grund-Request-Objekt anlegen
  $sendNewsletterRequest = new StdClass();

  //ID des Mandanten setzen
  $sendNewsletterRequest->mandatorId = 0;

  //ID des Templates setzen, welches versendet werden soll. Wird hier eine ID angegebenen, die größer 0 ist,
  //dann wird IMMER versucht den Newsletter aus dem Template zu generieren. Wenn kein Template genutzt,
  //sondern der Quelltext direkt hier angegeben werden soll, dann als Template-ID eine 0 eintragen.
  //$sendNewsletterRequest->templateId = 0;

  //Quelltext des Newsletters setzen
  $sendNewsletterRequest->newsletterContent = utf8_encode("<html><body>HTML-Inhalt des Newsletters</body></html>");
  $sendNewsletterRequest->alternativeContent = utf8_encode("Text-Inhalt des Newsletters");

  //Betreff für das Mailing setzen
  $sendNewsletterRequest->subject = utf8_encode("Betreff des Newsletters");

  //Absendername
  $sendNewsletterRequest->senderName = "Absendername";

  //Absender-E-Mail
  $sendNewsletterRequest->senderEmail = "user@example.com";

  //Änderungsmeldung für das Mailing setzen (Es wird die Variable $$SPECIAL-REPLACEMENT-TEXT$$ ersetzt).
  $sendNewsletterRequest->adhockInformation = utf8_encode("Ersetzung für die Variable");

  //Array für die Empfänger
  $sendNewsletterRequest->subscribers = array();

  //Versandzeit setzen
  date_default_timezone_set('Europe/Berlin');
  $sendNewsletterRequest->sendTime = time();

  //Empfänger setzen
  $subscriber = new StdClass();
  $subscriber->mandatorId = 0;

  //Emailadresse angeben
  $subscriber->subscriberEmail = "user@example.com";

  //Verteilerlisten angeben
  //Verteilerliste kann variabel sein. Daher bitte konfigurierbar vorsehen!
  $subscriber->newsletterListIds = array(1);

  //persönliche Daten angeben. Hierbei MUSS der Feldname in UPPER_CASE und EXAKT so wie in Backclick
  //geschrieben werden, ansonsten können die Felder nicht zugeordnet werden
  $subscriber->subscriberFields = array();
  $subscriberField = new StdClass();
  //Feldname angeben
  $subscriberField->fieldName = utf8_encode ("VORNAME");
  //Feldwert angeben
  $subscriberField->fieldValue = utf8_encode ("Vorname");

  //Feld dem Abonnenten hinzufügen
  array_push($subscriber->subscriberFields, $subscriberField);

  //Weiteres Feld angeben
  $subscriberField = new StdClass();
  $subscriberField->fieldName = utf8_encode ("NACHNAME");
  $subscriberField->fieldValue = utf8_encode ("User");
  array_push($subscriber->subscriberFields, $subscriberField);
  
  //Abonnent dem Request hinzufügen
  array_push($sendNewsletterRequest->subscribers, $subscriber);
  
  /*
   * -----------------
   * OPTIONALE ANGABEN
   * -----------------   
   */
  
  /*
   * API-Key.
   * Anstatt den Zugriff auf die Backclick-Schnittstelle über freigegebene IP-Adressen zu regeln,
   * kann die Zugriffsberechtigung auch über einen API-Key geregelt werden.
   * Ist im System ein API-Key definiert, MUSS dieser API-Key (siehe Menüpunkt: System-Administration->Grundeinstellungen
   * ->Einstellungen für das WebInterface) angegeben werden, da die Liste der freigegebenen IP-Adressen dann NICHT GILT!
   */
  $sendNewsletterRequest->apiKey = "";

  //Ausführen der Abfrage
  try {
    $result = $client->sendNewsletter($sendNewsletterRequest);
    var_dump($result);
  } catch (Exception $e) {
    echo "\n" . $e->getMessage() . "\n";
    if (is_array($e->detail->ValidationError)) {
      foreach ($e->detail->ValidationError as $ve) {
        echo $ve . "\n";
      }
    } else {
      echo $e->detail->ValidationError . "\n";
    }
  }
?>