Bounce / Externes Script / Globale Einstellung Verständnis

PHP Newsletter Software/Script und E-Mail-Marketing Software SuperWebMailer

Moderator: mirko

Antworten
Benutzeravatar
mirko
Beiträge: 21647
Registriert: 25.11.2001, 15:14
Wohnort: Leipzig
Kontaktdaten:

Re: Bounce / Externes Script / Globale Einstellung Verständnis

Beitrag von mirko » 09.07.2019, 11:37

cron_bounces.inc.php ganz ans Ende scrollen, function CallExternalBounceScript, wird aufgerufen. Diese Funktion ruft _LDCCE() in der functions.inc.php für den eigentliche http(s)-Aufruf auf.

the_scrat
Beiträge: 131
Registriert: 07.09.2010, 16:20

Re: Bounce / Externes Script / Globale Einstellung Verständnis

Beitrag von the_scrat » 08.07.2019, 18:23

Das externe Script/Log funktioniert!!!! Die Datei existiert und protokolliert JEDEN Aufruf, egal ob Parameter übergeben werden oder nicht!

In dem Logauszug ist deutlich zu erkennen, dass Hardbounces gefunden wurden und diese auch in den Empfängerlisten angetroffen wurden

Code: Alles auswählen

Aktion:	ausgeführt Prüfung auf unzustellbare E-Mails (Hard bounces)
Start:	08.07.2019 09:02:01
Ende:	08.07.2019 09:02:06
Ergebnis:	Bounce checking starts...
Checking inbox "BOUNCE GLOBAL"
>>>>>>>>>>>>>>>>>Successfully; found new emails: 89; hard bounces: 73<<<<<<<<<<<<<<
Checking mailing list 'Empfängerliste_1'...
0 recipient(s) found in mailing list.
0 permanently hard bounced recipients deactivated
Checking mailing list 'Empfängerliste_2'...
>>>>>>>>>>>>>>>>>2 recipient(s) found in mailing list.<<<<<<<<<<<<<<<<<
0 permanently hard bounced recipients deactivated
Checking mailing list 'Empfängerliste_3'...
1 recipient(s) found in mailing list.
0 permanently hard bounced recipients deactivated
Checking mailing list 'Empfängerliste_4...
0 recipient(s) found in mailing list.
0 permanently hard bounced recipients deactivated
Checking mailing list 'Empfängerliste_5'...
0 recipient(s) found in mailing list.
0 permanently hard bounced recipients deactivated
Checking mailing list 'Empfängerliste_6'...
>>>>>>>>>>>>>>>>>>>>>>>>>73 recipient(s) found in mailing list.<<<<<<<<<<<<<<<<<<<<<<<<<
0 permanently hard bounced recipients deactivated
Checking mailing list 'Empfängerliste_7'...
0 recipient(s) found in mailing list.
0 permanently hard bounced recipients deactivated
Done Checking inbox "BOUNCE GLOBAL"

Bounce checking end.
Die URL zum externen Script ist bei der Empfängerliste hinterlegt, genauso wie der Bounceabruf.

Und dennoch wird hier keine externe Verbindung geöffnet! Durch die Obfuskation ist eine Fehlersuche im PHP natürlich schwierig.
Gibt es irgendwo einen Trigger/HOOK den man nutzen kann um zu sehen ob der Aufruf funktioniert, ob die Funktion überhaupt sauber inkludiert wurde?

PS: Laut PHP Doku wird bei fopen und Parameter 'a' die Datei sehr wohl erzeugt:
https://www.php.net/manual/de/function.fopen.php

Benutzeravatar
mirko
Beiträge: 21647
Registriert: 25.11.2001, 15:14
Wohnort: Leipzig
Kontaktdaten:

Re: Bounce / Externes Script / Globale Einstellung Verständnis

Beitrag von mirko » 08.07.2019, 17:59

In dem fopen() die Status.log selbst erstellen und Rechte auf 0777, bei mir hat er die Datei nicht selbst erstellt, kam ein Fehler. Und wie gesagt nur wenn der Empfänger in der Empfängerliste vorhanden ist, erfolgt ein Aufruf, ansonsten macht er gar nichts.

the_scrat
Beiträge: 131
Registriert: 07.09.2010, 16:20

Re: Bounce / Externes Script / Globale Einstellung Verständnis

Beitrag von the_scrat » 08.07.2019, 16:50

Danke fürs Testen, aber das hilft mir nur bedingt weiter.
Ein solchen Script habe ich bereits, wie vorher im Beitrag geschrieben:

Code: Alles auswählen

	$fp = fopen('./logs/'.date("Y-m").'-Status.log', 'a');
	fwrite($fp, "---------".date('d.m.Y H:i:s')."-------\n");
	fwrite($fp, print_r($_GET,TRUE));
	fwrite($fp, "=======================================\n");
	fclose($fp);
Damit sehe ich auch, wenn ein Aufruf gemacht wird dem nichts übermittelt wird. Also egal ob die Datei direkt aufrufe oder mit GET Parameter, ich sehe auf jeden Fall ein Resultat.

Das hier ist der Auszug aus dem Cronjoblog aus dem SWM. Empfängerlisten habe ich mal umbenannt.

Code: Alles auswählen

Aktion:	ausgeführt Prüfung auf unzustellbare E-Mails (Hard bounces)
Start:	08.07.2019 09:02:01
Ende:	08.07.2019 09:02:06
Ergebnis:	Bounce checking starts...
Checking inbox "BOUNCE GLOBAL"
Successfully; found new emails: 89; hard bounces: 73
Checking mailing list 'Empfängerliste_1'...
0 recipient(s) found in mailing list.
0 permanently hard bounced recipients deactivated
Checking mailing list 'Empfängerliste_2'...
2 recipient(s) found in mailing list.
0 permanently hard bounced recipients deactivated
Checking mailing list 'Empfängerliste_3'...
1 recipient(s) found in mailing list.
0 permanently hard bounced recipients deactivated
Checking mailing list 'Empfängerliste_4...
0 recipient(s) found in mailing list.
0 permanently hard bounced recipients deactivated
Checking mailing list 'Empfängerliste_5'...
0 recipient(s) found in mailing list.
0 permanently hard bounced recipients deactivated
Checking mailing list 'Empfängerliste_6'...
73 recipient(s) found in mailing list.
0 permanently hard bounced recipients deactivated
Checking mailing list 'Empfängerliste_7'...
0 recipient(s) found in mailing list.
0 permanently hard bounced recipients deactivated
Done Checking inbox "BOUNCE GLOBAL"

Bounce checking end.
Hinterlegt ist (Link unkenntlich gemacht, jedoch getestet)
swm_status.jpg
swm_status.jpg (37.91 KiB) 818 mal betrachtet
Link manuell aufgerufen und GET Parameter in die URL geschrieben

Code: Alles auswählen

https://... status.php?EMail=test@example.com&BounceType=PermanentlyBounced&BounceCount=2
Ergibt:

Code: Alles auswählen

---------08.07.2019 16:46:21-------
Array
(
    [EMail] => test@example.com
    [BounceType] => PermanentlyBounced
    [BounceCount] => 2
)
So, also am externen Script und der Url kann es schonmal nicht liegen. Ich sehe aber auch nirgends ob der SWM überhaupt versucht das externe Script aufzurufen.

Wo kann das Problem sonst noch sein?

Benutzeravatar
mirko
Beiträge: 21647
Registriert: 25.11.2001, 15:14
Wohnort: Leipzig
Kontaktdaten:

Re: Bounce / Externes Script / Globale Einstellung Verständnis

Beitrag von mirko » 08.07.2019, 15:58

Ich habe das jetzt extra getestet, funktioniert. Natürlich wird das Script nur aufgerufen, wenn die E-Mail-Adresse in der Empfängerliste sich befindet, ansonsten niemals.

Simples Beispiel:

Code: Alles auswählen

<?php

 $logdatei = "D:/xampp/htdocs/bounces.txt";

 $fp = fopen($logdatei, "a+");
 fwrite($fp, $_GET["EMail"] . ' ' . $_GET["BounceType"] . ' ' . $_GET["BounceCount"] . "\r\n");
 fclose($fp);

?>
$Logdatei muss natürlich korrekt angepasst werden, die Datei muss existieren und Schreibrechte darauf.

Endergebnis in der Datei sieht dann z.B. so aus (E-Mail-Adressen habe ich verfälscht, damit keiner Spam dorthin schickt):

info2@newslettercreator PermanentlyBounced 2
info3@newslettercreator PermanentlyBounced 2
info4@newslettercreator PermanentlyBounced 2
info5@newslettercreator PermanentlyBounced 2
info6@newslettercreator PermanentlyBounced 2

the_scrat
Beiträge: 131
Registriert: 07.09.2010, 16:20

Re: Bounce / Externes Script / Globale Einstellung Verständnis

Beitrag von the_scrat » 08.07.2019, 13:08

Genau so hab ich es gemacht, aber es passiert nichts. Darüber habe ich auch noch das Postfach ausgewählt in dem auf Bounces geprüft werden soll. Dass dies funktioniert zeigt mir die Statistik mit dem schwarzen Balken. Aber das externe Script wird leider nicht aufgerufen.
Daher die Frage auf Protokollierung des Scriptaufrufs

Benutzeravatar
mirko
Beiträge: 21647
Registriert: 25.11.2001, 15:14
Wohnort: Leipzig
Kontaktdaten:

Re: Bounce / Externes Script / Globale Einstellung Verständnis

Beitrag von mirko » 08.07.2019, 13:03

Die jeweilige Empfängerliste ändern, dort muss der Script-Aufruf angegeben werden, z.B. https://www.supermailer.de/newsletter.php. Das Script wird aufgerufen und per HTTP GET EMail=, BounceType= und BounceCount= übergeben. Steht auch so in der Hilfe, auch online https://newsletter-software-php-script. ... stedit.htm

the_scrat
Beiträge: 131
Registriert: 07.09.2010, 16:20

Re: Bounce / Externes Script / Globale Einstellung Verständnis

Beitrag von the_scrat » 08.07.2019, 12:48

Danke, was der Sinn und Zweck von Bounce ist, war mir schon bekannt.

Allerdings beantwortet das nicht meine Frage was das unterschiedliche Verhalten der verschiedenen Empfängerlisten angeht. Denn ich kann nicht einfach "pauschal" sagen, lösch in allen Listen den Eintrag.

Im übrigen habe ich es bisher nicht geschafft, dass "Externes Script beim Erkennen von Hard Bounces per http(s):// aufrufen" funktioniert.
Habe ein Script hinterlegt, was trotz erkannter Hard-Bounces (Statistik) das Script nicht aufruft. Im Script selbst habe ich erstmal nur einen reinen Log hinterlegt, dass mir jeder Aufruf in eine Log-Datei geschrieben wird, egal ob per GET oder POST.
Aber hier passiert seit Tagen nichts. Wird dieser Scriptaufruf irgendwo dokumentiert, dass ich zumindest im SWM prüfen kann, dass das Script angesteuert wurde?

Weil wenn das gewünschte Prozedere mit den unterschiedlichen Bounce-Managment nicht funktioniert, muss ich mich wohl oder übel manuell über externe Script darum kümmern. Aber dazu müsste der Scriptaufruf natürlich auch funktionieren :-)
Der müsste doch eigentlich immer funktionieren, auch wenn keine Option in den Einstellungen (Bounce-Management) gewählt wurde (Empfänger löschen etc.)

Benutzeravatar
mirko
Beiträge: 21647
Registriert: 25.11.2001, 15:14
Wohnort: Leipzig
Kontaktdaten:

Re: Bounce / Externes Script / Globale Einstellung Verständnis

Beitrag von mirko » 02.07.2019, 11:02

Der Sinn & Zweck des Bouncemanagements ist es automatisiert die unzustellbaren E-Mail-Adressen zu erkennen und dauerhaft aus den zugewiesenen Listen zu entfernen. In eigenen Datenbeständen geht das nur über den externen Scriptaufruf, muss man sich natürlich selbst Gedanken machen, was im Hintergrund dann automatisch oder manuell passieren soll.

the_scrat
Beiträge: 131
Registriert: 07.09.2010, 16:20

Bounce / Externes Script / Globale Einstellung Verständnis

Beitrag von the_scrat » 01.07.2019, 22:14

Hallo Mirko,

ich nutze den Superwebmailer in mehrfacher Hinsicht. Habe diverse Empfängerlisten für den klassischen Newsletter und manche Empfängerlisten sind für Onlinekurse.

Die Aktion für Bouncemails werden global in den Einstellungen hinterlegt (Einstellung - Optionen - Bounce-Management).

In den klassischen Newsletterlisten können permanent nicht zustellbare Mails gerne gelöscht werden.
Bei Onlinekursen hingegen bräuchte ich das externe Script, mit dem ich meinem System mitteile, dass der User deaktiviert wird, ggf. einen Hinweis für den User hinterlassen etc. aber auf keinen Fall die Adresse löschen.

Ist das aktuell überhaupt möglich? Wäre es nicht besser für jede Empfängerliste die Bounce-Aktion separat zu bestimmen, somit hätte man die maximale Flexiblität.

Vielleicht stehe ich aber auch auf dem Schlauch und habe einfach nur ein Verständnisproblem :-)
Würde mich über eine kurze Aufklärung freuen.

Antworten