Newsletter personalisieren

Gesperrt
John-Boy
Beiträge: 10
Registriert: Do 23. Dez 2004, 18:52
Kontaktdaten:

Newsletter personalisieren

Beitrag von John-Boy »

Hallo zusammen!
Stehe wiedermal vor einem (für mich) unlösbarem Problem.
Verwende Contenido 4.4.5 und hab das Newsletter-Modul V2.0 erfolgreich installiert. nun möchte ich aber aus der db den namen des users für den NL und die Begrüßungsmail holen. Da ich aber ein absoluter newbee bin, bin ich vor ca. 1 stunde an meine grenzen gestoßen... :shock: :(

hier der code:
die in diesem zusammenhang von mir geänderten element hab ich fett hervorgehoben


<?php
$from = "news@domain.de "; /* Specify sender e-mail */
$welcome_title = "Welcome"; /* Title of welcome newsletter, to deactivate function: use "" */

switch ($lang):
case 5: /* There is never a language with id 0, just an example */
$msg = array ("txtMsgSubscribeHeader" => " Newsletter: Confirmation ",
"txtMsgSubscribe" => "Dear user,\nto confirm your newsletter subscription please use this link:",
"txtMsgDeleteHeader" => "Newsletter: Cancellation",
"txtMsgDelete" => "Dear subscriber,\nto cancel your newsletter subscription please use this link:",
"htmlErrNoEMail" => "Please specify an e-mail adress.",
"htmlOKSubscribe" => "Dear user,<br><br>you should get an e-mail in just a few seconds. Please confirm your newsletter subscription using the link provided in the e-mail.",
"htmlErrSubscribe" => "This e-mail adress is already listed for the newsletter subscription.",
"htmlOKDelete" => "Dear subscriber,<br><br>you should get an e-mail in just a few seconds. To confirm the cancellation of your newsletter subscription please use the link provided in the e-mail.",
"htmlErrDelete" => "This e-mail adress doesn't receive our newsletter.",
"htmlOKConfirm" => "Operation successful, thank you!<br><br>You are now member of the big family of subscribers to our newsletter.",
"htmlOKConfirmWelcome" => " Even the welcome newsletter is on the way to you!",
"htmlErrConfirm" => "Operation not successful!<br><br>Your account hasn't been confirmed for the newsletter subscription.",
"htmlOKStop" => "Operation successful, you will not get our newsletter until you decide to do so again.",
"htmlErrStop" => "Operation not successful!<br><br>Your account doesn't take a break from newsletter subscription.",
"htmlOKGoOn" => "Operation successful. We are happy to send you our newsletter again.",
"htmlErrGoOn" => "Operation not successful!<br><br>Your account hasn't been reactivated again.",
"htmlOKUnsubscribe" => "We confirm the cancellation of the newsletter subscription.",
"htmlErrUnsubscribe" => "Operation not successful!<br><br>Your newsletter subscription hasn't been cancelled.");
break;


default: /* Use this area for your preferred (or your one and only) language */
$msg = array ("txtMsgSubscribeHeader" => "Newsletter: Bestätigung",
"txtMsgSubscribe" => "Sehr geehrter {$name} ,\num Ihre Teilnahme am Newsletter zu bestätigen, klicken Sie bitte auf den unten stehenden Link:",
"txtMsgDeleteHeader" => "Newsletter: Abbestellen",
"txtMsgDelete" => "Sehr geehrter Newsletter-Abonnent, \num den Newsletter zu kündigen, klicken Sie bitte auf untenstehenden Link:",
"htmlErrNoEMail" => "Bitte geben Sie eine E-Mail-Adresse an.",
"htmlOKSubscribe" => "Sehr geehrter Interessent,<br><br>Sie erhalten gleich eine E-Mail. Bitte bestätigen Sie Ihre Teilnahme am Newsletter.",
"htmlErrSubscribe" => "Diese E-Mail-Addresse ist bereits für den Newsletter eingetragen.",
"htmlOKDelete" => "Sehr geehrter Abonnent,<br><br>Sie erhalten gleich eine eMail. Bitte bestätigen Sie die Kündigung des Newsletters.",
"htmlErrDelete" => "Diese E-Mail-Addresse ist nicht für den Newsletter eingetragen.",
"htmlOKConfirm" => "Aktion erfolgreich, vielen Dank!<br><br>Sie gehören nun zum Kreis der Newsletter-Abonnenten.",
"htmlOKConfirmWelcome" => " Bereits unser Willkommens-Newsletter ist auf dem Weg zu Ihnen!",
"htmlErrConfirm" => "Aktion fehlgeschlagen!<br><br>Newsletter-Account konnte nicht bestätigt werden.",
"htmlOKStop" => "Ihr Newsletter-Abonnement pausiert.",
"htmlErrStop" => "Aktion fehlgeschlagen!<br><br>Newsletter-Account konnte nicht pausiert werden.",
"htmlOKGoOn" => "Aktion erfolgreich. Wir senden Ihnen gerne wieder unseren Newsletter.",
"htmlErrGoOn" => "Aktion fehlgeschlagen!<br><br>Newsletter-Account konnte nicht reaktiviert werden.",
"htmlOKUnsubscribe" => "Wir bestätigen hiermit die Kündigung Ihres Newsletter-Abonnements.",
"htmlErrUnsubscribe" => "Aktion fehlgeschlagen!<br><br>Newsletter-Account wurde nicht gekündigt.");
endswitch;

$rcp_id = 0;
$rcp_found = false;

if ($action == "subscribe")
{
if (!isset($email) || !$email) {
echo $msg["htmlErrNoEMail"];
} else {
$encoded_email = urlencode(strtolower($email));
$sql = "SELECT idnewsrcp, name FROM ".$cfg["tab"]["news_rcp"] ." WHERE email = '$encoded_email' AND idclient='$client' AND idlang='$lang' ";



$db->query($sql);
if (!$db->next_record())
{

$body = $msg["txtMsgSubscribe"]."\n".$cfgClient[$client]["path"]["htmlpath"]."front_content.php?changelang=".$lang."&idcatart=".$newsletteridcatart."&confirm=".md5($encoded_email)."\n\n";

$name=$db->f ["name"];
$timestamp = date("Y-m-d H:i:s");
$sql = "INSERT INTO ".$cfg["tab"]["news_rcp"] ." SET idnewsrcp = '".$db->nextid($cfg["tab"]["news_rcp"])."', idclient='$client', idlang='$lang', author='website', email='$encoded_email', name='".urlencode($emailname)."', deactivated='1', created='$timestamp'";
$db->query($sql);

mail("$email", $msg["txtMsgSubscribeHeader"], "$body", 'From: '.$from."\n"."X-Mailer: Contenido [PHP/" . phpversion()."]");

echo $msg["htmlOKSubscribe"];
} else {
echo $msg["htmlErrSubscribe"];
}
}
}

if ($action == "delete")
{
if (!isset($email) || !$email) {
echo $msg["htmlErrNoEMail"];
} else {
$encoded_email = urlencode(strtolower($email));
$sql = "SELECT idnewsrcp FROM ".$cfg["tab"]["news_rcp"] ." WHERE email = '$encoded_email' AND idclient='$client' AND idlang='$lang'";

$db->query($sql);
if ($db->next_record())
{
$body = $msg["txtMsgDelete"]."\n".$cfgClient[$client]["path"]["htmlpath"]."front_content.php?changelang=".$lang."&idcatart=".$newsletteridcatart."&unsubscribe=".md5($encoded_email)."\n\n";

mail("$email", $msg["txtMsgDeleteHeader"], "$body", 'From: '.$from."\n"."X-Mailer: Contenido [PHP/" . phpversion()."]");

echo $msg["htmlOKDelete"];
} else {
echo $msg["htmlErrDelete"];
}
}
}

if (strlen($confirm) == 32)
{
$sql = "SELECT idnewsrcp, name, email FROM ".$cfg["tab"]["news_rcp"] ." WHERE idclient='$client' AND idlang='$lang' AND confirmed = '0'";
$db->query($sql);

while (!$rcp_found && $db->next_record())
{
if ($confirm == md5($db->f("email")))
{
$rcp_found = true;
$rcp_id = $db->f("idnewsrcp");
$name = urldecode($db->f("name"));
$encoded_email = $db->f("email");
$to = urldecode($encoded_email);
/* If no name given, use e-mail as name */
if (empty($name)) {
$name = $to;
}
}
}
if ($rcp_found) {
$sql = "UPDATE " .$cfg["tab"]["news_rcp"] ." SET confirmed = '1', deactivated = '0' WHERE idnewsrcp = '".$rcp_id."'";
$db->query($sql);
echo $msg["htmlOKConfirm"];
if ($welcome_title != "") {
$sql = "SELECT * FROM ".$cfg["tab"]["news"]." WHERE idclient='$client' AND idlang='$lang' AND name='$welcome_title'";
$db->query($sql);
if ($db->next_record()) {
$from = $db->f("newsfrom");
$subject = $db->f("subject");
$message = $db->f("message");
$date = $db->f("newsdate");
$dateday = $date[8].$date[9].".".$date[5].$date[6].".".$date[0].$date[1].$date[2].$date[3];
$time = $date[11].$date[12].":".$date[14].$date[15].":".$date[17].$date[18];

$sql = "SELECT idclient, htmlpath FROM ".$cfg["tab"]["clients"]." WHERE idclient='$client'";
$db->query($sql);
$db->next_record();
$path = $db->f("htmlpath")."front_content.php?changelang=".$lang."&idcatart=".$newsletteridcatart."&";

$message = str_replace("MAIL_NUMBER", "1", $message); /* $number wird mit 1 gesetzt, da nur ein Empfänger */
$message = str_replace("MAIL_DATE", "$dateday", $message);
$message = str_replace("MAIL_TIME", "$time", $message);

$message = str_replace("MAIL_NAME", "$name", $message);
$message = str_replace("MAIL_UNSUBSCRIBE", $path."unsubscribe=".md5($encoded_email), $message);
$message = str_replace("MAIL_STOP", $path."stop=".md5($encoded_email), $message);
$message = str_replace("MAIL_GOON", $path."goon=".md5($encoded_email), $message);

if (mail("$to", "$subject", "$message", 'From: '.$from."\n"."X-Mailer: Contenido [PHP/".phpversion())) {
echo $msg["htmlOKConfirmWelcome"];
}
}
}
} else {
echo $msg["htmlErrConfirm"];
}
}

if (strlen($stop) == 32)
{
$sql = "SELECT idnewsrcp, email FROM ".$cfg["tab"]["news_rcp"] ." WHERE idclient='$client' AND idlang='$lang'";
$db->query($sql);

while (!$rcp_found && $db->next_record())
{
if ($stop == md5($db->f("email")))
{
$rcp_found = true;
$rcp_id = $db->f("idnewsrcp");
}
}
if ($rcp_found) {
$sql = "UPDATE " .$cfg["tab"]["news_rcp"] ." SET deactivated = '1' WHERE idnewsrcp = '".$rcp_id."'";
$db->query($sql);
echo $msg["htmlOKStop"];
} else {
echo $msg["htmlErrStop"];
}
}

if (strlen($goon) == 32)
{
$sql = "SELECT idnewsrcp, email FROM ".$cfg["tab"]["news_rcp"] ." WHERE idclient='$client' AND idlang='$lang'";
$db->query($sql);

while (!$rcp_found && $db->next_record())
{
if ($goon == md5($db->f("email")))
{
$rcp_found = true;
$rcp_id = $db->f("idnewsrcp");
}
}
if ($rcp_found) {
$sql = "UPDATE " .$cfg["tab"]["news_rcp"] ." SET deactivated = '0' WHERE idnewsrcp = '".$rcp_id."'";
$db->query($sql);
echo $msg["htmlOKGoOn"];
} else {
echo $msg["htmlErrGoOn"];
}
}

if (strlen($unsubscribe) == 32)
{
$sql = "SELECT idnewsrcp, email FROM ".$cfg["tab"]["news_rcp"] ." WHERE idclient='$client' AND idlang='$lang'";
$db->query($sql);

while (!$rcp_found && $db->next_record())
{
if ($unsubscribe == md5($db->f("email")))
{
$rcp_found = true;
$rcp_id = $db->f("idnewsrcp");
}
}
if ($rcp_found) {
$sql = "DELETE FROM " .$cfg["tab"]["news_rcp"] ." WHERE idnewsrcp = '".$rcp_id."'";
$db->query($sql);
echo $msg["htmlOKUnsubscribe"];
} else {
echo $msg["htmlErrUnsubscribe"];
}
}
?>

hoffe irgenjemand kann mir helfen.

Vielen dank im voraus!
LG
"der verzweifelte Johannes"
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence »

so wird das nicht funktionieren

-> "txtMsgSubscribe" => "Sehr geehrter {$name} ,\num Ihre Teilnahme am Newsletter zu bestätigen, klicken Sie bitte auf den unten stehenden Link:",

du könntest aber was anderes machen

Code: Alles auswählen

"txtMsgSubscribe" => "Sehr geehrter %s ,\num Ihre Teilnahme am Newsletter zu bestätigen, klicken Sie bitte auf den unten stehenden Link:", 

Code: Alles auswählen

$body = sprintf($msg["txtMsgSubscribe"], $db->f ["name"])."\n".$cfgClient[$client]["path"]["htmlpath"]."front_content.php?changelang=".$lang."&idcatart=".$newsletteridcatart."&confirm=".md5($encoded_email)."\n\n";
*** make your own tools (wishlist :: thx)
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB »

Und so wird es auch nicht funktionieren, da das SQL-Statement, welches Du verwendet hast, nur prüft, ob die E-Mail-Adresse nicht schon für den Newsletter eingetragen ist.

Zum Event subscribe ist noch kein Name in der DB gespeichert. Stattdessen befindet sich der Name bereits in der Variable $emailname.

Also die Änderungen im SQL-Statement rückgängig machen, $name = entfällt auch und folgendes Statement verwenden:

Code: Alles auswählen

$body = sprintf($msg["txtMsgSubscribe"], $emailname)."\n".$cfgClient[$client]["path"]["htmlpath"]."front_content.php?changelang=".$lang."&idcatart=".$newsletteridcatart."&confirm=".md5($encoded_email)."\n\n";
Das mit dem %s benötigt man natürlich.

Der Fairness halber sei gesagt, dass man mit der Änderung wunderbare E-Mails an wildfremde Menschen versenden kann mit dem Wortlaut:

"Hallo Du Arsch,
um Ihre Teilnahme ..." :wink:

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
John-Boy
Beiträge: 10
Registriert: Do 23. Dez 2004, 18:52
Kontaktdaten:

Vielen, vielen...

Beitrag von John-Boy »

...Dank! Hast mich gerettet! :D
LG
John-Boy
Gesperrt