Newsletter - Wichtig

malsdgtac
Beiträge: 717
Registriert: Fr 12. Mär 2004, 15:50
Kontaktdaten:

Newsletter - Wichtig

Beitrag von malsdgtac »

Hallo, ich habe einen alten Newsletter in Contenido übernommen. Dazu habe ich die Newsletteradressen in eine csv-Datei geschrieben und in die Datenbank importiert, hat auch super geklappt.

Jetzt kommt allerdings mein Problem: Bei der neuen Anmeldung von Newsletterempfänger wird nun eine "idnewsrcp" vergeben die allerdings schon verwendet wird (weil ich diese beim import verwendet habe). Wo steht diese Variable, damit ich diese anpassen kann?
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB »

In der con_sequence. Einfach die höchste ID + 1 in der Tabelle eintragen.

Die Newsletter-Überarbeitung nutzt Du bereits (siehe Signatur)?

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net
malsdgtac
Beiträge: 717
Registriert: Fr 12. Mär 2004, 15:50
Kontaktdaten:

Beitrag von malsdgtac »

Super - danke für die schnelle Antwort, das war genau das was ich gesucht habe.

Die Überarbeitung benutze ich bereits, ich verwende den HTML-Newsletter funkioniert auch super gut.

Vielleicht noch eine Frage dazu, kann man die Variablen die man beim normalen Newsletter verwenden kann auch beim HTML-Newsletter verwenden? Im speziellen gehts mir um den direkten Link um sich vom Newsletter abzumelden.

Vielen Dank nochmals für die Hilfe
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB »

Grundsätzlich ja, aber die Frage ist, wo man die einbauen könnte. Das Modul HTMLNewsletter versendet ja nur eine Webseite.

Es bliebe eigentlich nur, auf der Webseite ein Element à la {Abmelden} einzubauen und dieses vor dem Senden zu ersetzen.

Der Link selbst ist (in der V4.4.x) so aufgebaut:
"<Pfad zum Frontend>"."front_content.php?changelang=".$lang."&idcatart=".$newsletteridcatart."&unsubscribe=".md5($email)

(Beispiel Anmeldung, weitere Elemente sind in der include.newsletter_send.php enthalten)

In V4.5.x muss man sich zu jedem Empfänger neben der E-Mail auch den hash aus der DB holen.

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net
malsdgtac
Beiträge: 717
Registriert: Fr 12. Mär 2004, 15:50
Kontaktdaten:

Beitrag von malsdgtac »

Also ich habe jetzt eine Lösung gefunden, denke mir aber, dass diese nicht gerade die schönste ist - aber sie funktioniert. Ich habe dafür im Output des HTML-Newsletter einige Zeilen geändert:

Code: Alles auswählen

<?php
	// HTMLNewsletter v0.2
	// (c) Maurer IT Systemlösungen
	// Autor: 	Ing. Christian Schuller
	// Date:	22.01.2004

	// This is a good BETA Version, but there will be no guarantee for anything.
	// If you find any BUGS, please use the forum (http://www.contenido.de/forum)
	// or write me an email to christian@maurer-it.com

	//Abmeldetext
	$abmeldetext = "<br>Diesen Newsletter haben Sie erhalten, weil Ihre Emailadresse in unsere Mailingliste eingetragen wurde. Falls dies ohne Ihr Einverständnis erfolgt ist oder wenn Sie keine weiteren Newsletter erhalten möchten, klicken Sie bitte auf folgenden Link, um Ihre Emailadresse aus unserer Mailingliste auszutragen:";

	// Konfiguration vars
	$cfg_basedir = "moduls/HTMLNewsletter/";
	$cfg_mail_subject = "CMS_VALUE[1]";
	$cfg_mail_from = "CMS_VALUE[2]";
	require($cfg_basedir."multipart_mime_mail.php");

if (!isset($noex))
{  
	if (!isset($send))
	{
		if ($edit==true)
			echo "<a href='".$auth->url()."&send=1'>".i18n("Newsletter Senden")."</a>";
	}
 	else
 	{
		$file = $cfgClient[$client]['path']['htmlpath']."front_content.php?idcat=$idcat&idlang=$lang&idart=$idart&idclient=$client&noex=1";
		$handle = @fopen ($file, "r") or die("wrong file:".$file); 
		$body = ""; 
		while (!feof ($handle)) 
		{ 
			$body = $body.fgets($handle, 4096); 
		}
		fclose ($handle); 
	 
		// Do some magic things with url,links,and so on...
		
		//$body = str_replace("src=\"","src=\"".$cfgClient[$client]['path']['htmlpath'],$body);
		//$body = preg_replace('/href="([^h][^t][^t][^p][^:].*)"/','href="'.$cfgClient[$client]['path']['htmlpath'].'$1"',$body);
		$body = preg_replace('/[sS[rR][cC][ ]*=[ ]*"([^h][^t][^t][^p][^:].*)"/','rc="'.$cfgClient[$client]['path']['htmlpath'].'$1"',$body);
		$body = preg_replace('/[hH][rR][eE][fF][ ]*=[ ]*"([^h][^t][^t][^p][^:][A-Za-z0-9\.?\-=_&]*)"/','href="'.$cfgClient[$client]['path']['htmlpath'].'$1"',$body);
		$body = preg_replace('/url\((.*)\)/','url('.$cfgClient[$client]['path']['htmlpath'].'$1)',$body);
		
		
		
		//echo "-->".$body;
		$message[1]['content_type'] = 'text/html; charset=de-ascii';
		$message[1]['filename'] = '';
		$message[1]['no_base64'] = TRUE;
		$message[1]['data'] = $body; 
		
		$out = mp_new_message($message);
		
		$db = new DB_Contenido;
  		$sql = "SELECT email FROM ".$cfg["tab"]["news_rcp"]." where idlang=".$lang." and idclient=".$client." and deactivated=0 and confirmed=1"; 
  		$db->query($sql);
		while ($db->next_record())
		{

			$hallo = $abmeldetext." <a href='".$cfgClient[$client]["path"]["htmlpath"]."front_content.php?changelang=".$lang."&idcatart=".$newsletteridcatart."&unsubscribe=".md5($db->f("email"))."'>Emailadresse austragen</a></span><br><br>";

			$neuout=substr($out[0],0,strlen($out[0])-140).$hallo.substr($out[0],strlen($out[0])-140);

			mail(urldecode($db->f('email')), $cfg_mail_subject, $neuout, "From: ".$cfg_mail_from."\n".$out[1]);
		}
	}
}
?>

Der Abmeldetext ganz oben ist der Text, welcher zu dem Link angezeigt wird. Dieser sowie der Abmeldelink selbst wird mit in Variable $hallo übergeben.
Dazu wird der fertige Newsletterinhalt um eine bestimmte Anzahl von Zeichen gekürzt, $hallo hinzugefügt und dann der Rest des Newsletterinhalt angehängt. Das ganz geht bei der Variable $neuout über die Bühne. Naja und das ist sicher nicht die einfachste und sauberste Lösung, aber sie funktioniert wie gesagt.

Wenn man dieses Modul nun bei einem anderen Newsletter einfügen möchte muss man allerdings bezüglich der 140 Zeichen die in diesem Modul zum Abschneiden des Endes gebraucht werden vorsichtig sein. Ich habe gesehen, dass ca. 85 Zeichen hinter dem </html> Tag noch stehen, die man dann im Newsletter nicht mehr sieht, diese braucht man daher wohl immer. Da ich in meinem Newsletter ein Tabellenlayout verwendet habe ergeben sich eben 140 Zeichen, damit der Abmeldelink in der richtigen zelle steht - da kann man allerdings nur ausprobieren
Zuletzt geändert von malsdgtac am Mi 23. Mär 2005, 13:07, insgesamt 1-mal geändert.
stephanwilm
Beiträge: 44
Registriert: Mo 8. Nov 2004, 17:44
Kontaktdaten:

Beitrag von stephanwilm »

Die Idee ist genial, nur bekomme ich bei mir contenido 4.4.4 folgende Fehlermeldung im Modul von Dir
Fehler in Modul. Fehlerquelle: eval()'d code on line 3 <br />
Ohne die Änderung funktioniert alles supergenial!

Hast Du eine Ahnung, was dass sein könnte?

Vielen Dank
malsdgtac
Beiträge: 717
Registriert: Fr 12. Mär 2004, 15:50
Kontaktdaten:

Beitrag von malsdgtac »

Hm bin ich jetzt doch überfragt, weil es bei mir super läuft. Wo kommt denn der Fehler - im errorlog? Erlich gesagt weiss ich da auch nicht weiter.
stephanwilm
Beiträge: 44
Registriert: Mo 8. Nov 2004, 17:44
Kontaktdaten:

Beitrag von stephanwilm »

Der Fehler kommt schon bei anlegen des Moduls, anstatt des grünen Punktes erscheint der rote mit dieser Fehlermeldung.

Muss man ausser des output's noch was anpassen oder beachten?
malsdgtac
Beiträge: 717
Registriert: Fr 12. Mär 2004, 15:50
Kontaktdaten:

Beitrag von malsdgtac »

Nein außer dem Output musst du nichts ändern. Hast du wirklich den ganzen Code so wie er von mir da steht kopiert? Wenn ich das bei einem anderen System mache, kommt auch kein roter Punkt und ich verwende ebenfalls 4.4.4. Schau mal nach ob du auch die einleitenden php Tags mitkopiert hast
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB »

stephanwilm hat geschrieben:Die Idee ist genial, nur bekomme ich bei mir contenido 4.4.4 folgende Fehlermeldung im Modul von Dir
Fehler in Modul. Fehlerquelle: eval()'d code on line 3 <br />
Ohne die Änderung funktioniert alles supergenial!

Hast Du eine Ahnung, was dass sein könnte?

Vielen Dank
a) Bitte keine Anfrage via PM, wenn nicht ausdrücklich gewünscht
b) Ich bin weder Autor des Moduls noch der Erweiterung von smac
c) Beschreibe genau, was Du wo gemacht hast. Funktioniert das Modul bei Dir ohne die Änderung von smac?

Line 3 wäre so ziemlich die erste Zeile des Output-Bereichs...

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net
stephanwilm
Beiträge: 44
Registriert: Mo 8. Nov 2004, 17:44
Kontaktdaten:

Beitrag von stephanwilm »

@smac
Ich habe wirklich alles kopiert und es auch auf einer Neuinstallation getestet - geht auch nicht. Funktioniert es nur mit den Standardfiles der *include*'s oder auch mit den geposteten Änderungen von HerrB? http://www.contenido.org/forum/viewtopic.php?t=4302

@HerrB
a) okay, gebongt für die Zukunft
b) weiss ich
c) Ich habe ausschliesslich das Modul in das bereits funktionierende und existierende Modul kopiert - dann erscheint die Fehlermeldung. Ich habe auch die Änderungen von Dir durchgeführt und das andere Modul zuvor gehabt http://www.contenido.org/forum/viewtopic.php?t=4302
Ich habe noch ein Contenido zum Test aufgesetzt -ohne weitere Änderungen zu machen- da habe ich das gleiche Problem. Auch mit einem Mini-Layout. Nur ist der Fehlercode für mich wenigaussagend:-(

Muss ich noch mehr beachten, als nur den Output zu tauschen??

Sorry noch einmal und vielen Dank
malsdgtac
Beiträge: 717
Registriert: Fr 12. Mär 2004, 15:50
Kontaktdaten:

Beitrag von malsdgtac »

Also ich habe gerade versucht deinen Fehler nach zu verfolgen. Konnte ich nicht, die Zeile 3 beinhaltet ja eigentlich nur einen Kommentar.

Was mir aufgefallen ist, ist dass so ein Fehler mit eval() angezeigt wird, wenn man z.B. beim Anmeldetext, das abschließende Anführungszeichen wegmacht. Hast du daran was geändert?

Beim Input musst du nichts ändern.
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB »

Du könntest spaßenshalber mal die Leerzeile vor <?php rausnehmen. Danach mal die Zeilen einzeln einfügen (letzte Zeile muss nur ?> sein) - mindestens bis zum if (!isset...) sollte das fehlerfrei gehen.

Wenn es gar nicht geht: Modul-Output wieder komplett einfügen (auch mit Fehler) und mir die Anmeldedaten per PM senden (wenn die Seite denn aus dem Internet erreichbar ist...).

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB »

Erledigt, war ein falsches Zeilenendezeichen hinter <?php.

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net
stephanwilm
Beiträge: 44
Registriert: Mo 8. Nov 2004, 17:44
Kontaktdaten:

Beitrag von stephanwilm »

Das Modul bringt keinen Fehler mehr.
Bei klick auf "Emailadresse austragen" erscheint die Newsletter-Seite, die Adresse wird allerdings nicht ausgetragen:-(

Sorry, dass ich damit überhaupt nicht klar komme...

Ich bekomme nach dem Link und einer Leerzeile auch noch folgende Ausgabe: ble> und im log steht dazu auch nichts.
Gesperrt