Seite 1 von 1

Re: Eigenes Double Opt-In

Verfasst: 06.12.2018, 14:07
von DiGa1988
Vielen Dank, jetzt klappt alles! :D

Super Support hier!

Re: Eigenes Double Opt-In

Verfasst: 06.12.2018, 10:56
von mirko
mit den Gruppen hat das nichts zu tun, die IDs die es nicht gibt, werden ignoriert

Der Aufruf

$api = $_SERVER['DOCUMENT_ROOT'].'/swm/api/api.php';

ist falsch, das muss eine URL sein und nicht ein Verzeichnis, statt $_SERVER['DOCUMENT_ROOT'] entsprechend http(s)://domain usw. angeben.

Re: Eigenes Double Opt-In

Verfasst: 05.12.2018, 14:48
von DiGa1988
Hallo,

ich habe das Beispiel aus der nusoap_sample.php für mich angepasst:

Code: Alles auswählen

		if($_GET['nl']==="1"){
			require_once($_SERVER['DOCUMENT_ROOT']."/swm/api/nusoap/lib/nusoap.php");


			# url to api.php
			$api = $_SERVER['DOCUMENT_ROOT'].'/swm/api/api.php';
			$uri = $api.'?wsdl';

			// set your api key here
			$apikey = '<APIKEYMEINESBENUTZERS>';

			$client = new nusoap_client($api);
			$client->soap_defencoding = 'UTF-8';# use UTF-8!
			$err = $client->getError();
			if ($err) {
				echo '<h2>Constructor error</h2><pre>' . $err . '</pre>';
			}

			# set APIToken
			$client->setHeaders(array('APIToken' => $apikey));

			# sample: api_Mailinglists.api_createMailingList
			# $params = array("apiName" => "Test list", "apiDescription" => "", "apiSubscriptionType" => "SingleOptIn", "apiUnsubscriptionType" => "DoubleOptOut", "apiOptInConfirmationMailFormat" => "PlainText", "apiOptOutConfirmationMailFormat" => "PlainText");

			# sample: api_Recipients.api_createRecipient
			# $params = array("apiMailingListId" => 1, "apiData" => array( "u_EMail" => "webmaster@johndoe.com", "u_LastName" => "Doe", "u_FirstName" => "John" ), "apiarrayGroupsIds" => array(), "apiUseDoubleOptIn" => false);

			$params = array("apiMailingListId" => 2, "apiData" => array( "u_EMail" => $validate_email ), "apiarrayGroupsIds" => array(55), "apiUseDoubleOptIn" => false, "apiFormId" => 2);
			$result = $client->call('api_Recipients.api_createRecipient', $params, '', '', false, true);

?>
<!---
<?php
			if ($client->fault) {
				echo '<h2>Fault</h2><pre>';
				print_r($result);
				echo '</pre>';
			} else {
				$err = $client->getError();
				if ($err) {
					// Display the error
					echo '<h2>Error</h2><pre>' . $err . '</pre>';
				} else {
					// Display the result
					echo '<h2>Result</h2><pre>';
					var_dump($result);
					echo '</pre>';
				}
			}
			echo '<h2>Request</h2><pre>' . htmlspecialchars($client->request, ENT_QUOTES) . '</pre>';
			echo '<h2>Response</h2><pre>' . htmlspecialchars($client->response, ENT_QUOTES) . '</pre>';
			echo '<h2>Debug</h2><pre>' . htmlspecialchars($client->debug_str, ENT_QUOTES) . '</pre>';
?>
-->
<?php
		}
Ich habe angenommen, dass der Wert des Filters (entnommen aus dem input-Tag) auf der Seite "Empfänger anzeigen" der Gruppe entspricht, dessen Wert in "apiarrayGroupsIds" angegeben werden muss.

Ich erhalte jedoch folgenden Fehler: no transport found, or selected transport is not yet supported!
(Das, was unter "Debug" steht, kann ich auch gerne noch posten, wenn notwendig. Hier müsste ich dann nur API-Key etc. entfernen.)

Re: Eigenes Double Opt-In

Verfasst: 04.12.2018, 13:06
von mirko
das geht nur, wenn man die API verwendet werdet, ist in der Hilfe beschrieben auch online https://newsletter-software-php-script. ... ap_api.htm oder https://newsletter-software-php-script. ... on_api.htm

alternativ die Empfängerliste ändern und auf dem Reiter Anmeldung das Double-Opt-In auf Single-Opt-In ändern, das ist nicht empfehlenswert

Eigenes Double Opt-In

Verfasst: 04.12.2018, 12:48
von DiGa1988
Hallo,

ich trage über ein Formular Kundendaten in eine Datenbank ein (PHP) und schreibe hier schon eine E-Mail zur Bestätigung der E-Mail-Adresse. Nun möchte ich in diesem Formular abfragen, ob die Kunden auch den Newsletter bestellen möchten. Bisher habe ich es so gelöst, dass ich beim Klicken auf den Link in meiner E-Mail, der ein "&nl=1" enthält, wenn der Kunde den Newsletter erhalten möchte, den Kunden per Script in die entsprechende Empfängerliste eintrage:

Code: Alles auswählen

		if($_GET['nl']==="1"){
			$ch = curl_init('https://<PFADZUSUPERWEBMAILER>/nl.php');
			curl_setopt($ch, CURLOPT_POST, 1);
			curl_setopt($ch, CURLOPT_POSTFIELDS, 'u_EMail='.$validate_email.'&MailingListId=2&FormId=2&FormEncoding=utf-8&Action=subscribe');
			curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
			curl_setopt($ch, CURLOPT_HEADER, 0);
			curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
			curl_exec($ch);
		}
Mit "Action=subscribe" wird hier aber erneut eine E-Mail versendet, was ich jedoch möglichst vermeiden möchte. Für "Action=subscribeconfirm" fehlt mir der entsprechende Key.

Es sind bestimmt Möglichkeiten vorhanden, wie man dieses Problem sinnvoller lösen kann, oder? Bisher habe ich hierzu nicht gefunden.

Für Hilfe wäre ich dankbar.

Grüße