Extras - Newsletter: Anleitung, Bugfix, Neu, Multilanguage

HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB »

Der Versand des HTMLNewsletters erfolgt über Christian's HTMLNewsletter-Modul - ich nehme an, dass dort ggf. etwas konfiguriert werden muss (Mal Vorkonfiguration des Templates bzw. der Kategorie bzw. der Seite bei dem das Template verwendet wird, kontrollieren).

Die Absender-Angaben im Blackbox Newsletter Modul beziehen sich nur auf Bestätigungs-EMails (Anmeldung, Kündigung, u.ä,) und haben nix mit dem Versand des Newsletters zu tun.

Gruß
HerrB
llconsult
Beiträge: 12
Registriert: Mo 19. Apr 2004, 14:17
Wohnort: Köln
Kontaktdaten:

Versand von HTML-eMails, u.a.

Beitrag von llconsult »

Nachdem mir bereits hier im Forum viel geholfen wurde, möchte ich nun auch einmal etwas liefern.

Das Newslettermodul, wie hier beschrieben wurde von mir um folgende Punke erweitert.

1. Versand von Multipart-Mails, d.h. der Newsletter kann mit HTML formatiert werden. Dieser wird dann beim Versand zusätzlich in ein Textformat umgewandelt und ebenfalls verschickt. Kann oder will der Empfänger keine HTML-eMails, dann kann er zumindest auf die
Text-Wariante zugreifen. (Achtung: Bitte bei der HTML-Formatierung berücksichtigen, dass in einer Text-Ausgabe nicht alles gezeigt werden kann. Die Umwandlung ist nicht sehr "intelligent". Es werden alle HTML-Tags entfernt und Zeilenumrüche erzeugt.

2. Integration des HTMLArea2 zur Formatierung. Achtung: Funktioniert, wie hier beschrieben nur, wenn dieser HTML-Editor nicht als Standard-Editor benutzt wird.

3. Angabe eines Namens für den Absender (bei der Erstellung des NL)-Hierzu wird im Feld Absender, der Name einfach durch Semikolon getrennt angefügt (Bsp: newsletter@ll-consult.de;LL Consult News)

Folgende Änderungen sind notwendig:

1. config.php im Verzeichnis: contenido/includes

Code: Alles auswählen

$cfg['path']['htmlarea2_html'] = 'http://212.227.216.122/CMS/contenido/external/wysiwyg/htmlarea2/'; 
//an eignenen Pfad anpassen, einfach $cfg['path'][wysiwyg_html'] koipieren und spaw durch html-area ersetzen! 
2.editor.php im verzeichnis contenido/external/wysiwyg\htmlarea2
ca.Zeile 1175:

Code: Alles auswählen

_editor_url = "<?php print $cfg["path"]["wysiwyg_html"] ?>"; 
ersetzen durch
_editor_url ="../external/wysiwyg/htmlarea2/";
ca. Zeile 1182: auskommentieren

Code: Alles auswählen

//echo "<td bgcolor=\"$bg\"><textarea name=\"CMS_HTML\" rows=\"20\" cols=\"52\" style=\"width:650\">".urldecode($a_content[$type][$typenr])."</textarea></td>\n";
ca. Zeile 1211 auskommentieren:

Code: Alles auswählen

/*if(document.all) editor_generate('<?php print 'CMS_HTML' ?>',config);*/
3. include.newsletter_edit.php in contenido/includes ersetzen durch folgenden Code:
(es wird am Anfang die editor.php eingebunden und am Ende der HTML Editior aufgerufen)

Code: Alles auswählen

<?php
/******************************************
* File      :   include.newsletter_edit.php
* Project   :   Contenido
* Descr     :   Newsletter Editor
*
* Author    :   Timo A. Hummel
* Created   :   09.05.2003
* Modified  :   29.09.2004 LL Consult
*
* © four for business AG
*****************************************/

include_once ($cfg["path"]["contenido"] . $cfg["path"]["classes"] . "class.user.php");
include ($cfg["path"]["htmlarea2"]."editor.php"); //HTML-Area einbimdem LL Consult

$userclass = new User();

$db2 = new DB_Contenido;

if(!$perm->have_perm_area_action($area))
{
  $notification->displayNotification("error", i18n("No permission"));
} else {

if ( !isset($newsid) && $action != "news_createnewsletter" )
{
        $tpl->reset();
        $tpl->set('s', 'CONTENTS', '');
        $tpl->generate($cfg['path']['templates'] . $cfg['templates']['blank']);
} else {


    if ($action == "news_createnewsletter" && $finalstep == 1)
    {
                    $newsid = $db->nextid($cfg["tab"]["news"]);
                    $timestamp = date("Y-m-d H:i:s"); 
                    $sql = 'INSERT INTO
                             '.$cfg["tab"]["news"].'
                            SET
                              name="'.$name.'",
                              subject="'.$subject.'",
                              message="'.$message.'",
                              newsfrom="'.$newsfrom.'",
                              author="'.$auth->auth["uid"].'",
                              newsdate="'.$timestamp.'",
                              idclient="'.$client.'",
                              idlang="'.$lang.'",
                              idnews = "'.$newsid.'"';
 
                    $db->query($sql);


                    $notification->displayNotification("info", i18n("Changes saved"));
    }
    if (($action == "news_editnewsletter") && ($perm->have_perm_area_action($area, $action)))
    {

                    $sql = 'UPDATE
                             '.$cfg["tab"]["news"].'
                            SET
                              name="'.$name.'",
                              subject="'.$subject.'",
                              message="'.$message.'",
                              newsfrom="'.$newsfrom.'"
                            WHERE
                              idnews = "'.$newsid.'"';
                    $db->query($sql);

                    $notification->displayNotification("info", i18n("Changes saved"));
                    

        }
        


    $tpl->reset();
    
    $sql = "SELECT
                idnews, name, subject, message, newsfrom, newsdate, author
            FROM
                ".$cfg["tab"]["news"]."
            WHERE
                idnews = '".$newsid."'";

    $db->query($sql);

    if ($action != "news_createnewsletter")
    {
    
        $form = '<form name="news_edit" method="post" action="'.$sess->url("main.php?").'">
                 '.$sess->hidden_session().'
                 <input type="hidden" name="area" value="'.$area.'">
                 <input type="hidden" name="action" value="news_editnewsletter">
                 <input type="hidden" name="frame" value="'.$frame.'">
                 <input type="hidden" name="newsid" value="'.$newsid.'">
                 <input type="hidden" name="idlang" value="'.$lang.'">';
    } else {
        $form = '<form name="news_edit" method="post" action="'.$sess->url("main.php?").'">
                 '.$sess->hidden_session().'
                 <input type="hidden" name="area" value="'.$area.'">
                 <input type="hidden" name="action" value="news_createnewsletter">
                 <input type="hidden" name="finalstep" value="1">
                 <input type="hidden" name="frame" value="'.$frame.'">
                 <input type="hidden" name="newsid" value="'.$newsid.'">
                 <input type="hidden" name="idlang" value="'.$lang.'">';
    }
                 
    $db->next_record();
    
    $tpl->set('s', 'JAVASCRIPT', $javascript);
    $tpl->set('s', 'FORM', $form);
    $tpl->set('s', 'BORDERCOLOR', $cfg["color"]["table_border"]);
    $tpl->set('s', 'BGCOLOR', $cfg["color"]["table_dark"]);
    $tpl->set('s', 'SUBMITTEXT', i18n("Save changes"));
    $tpl->set('s', 'CANCELTEXT', i18n("Discard changes"));
    $tpl->set('s', 'CANCELLINK', $sess->url("main.php?area=$area&frame=4&newsid=$userid"));

    $tpl->set('d', 'CLASS', 'textw_medium');
    $tpl->set('d', 'CATNAME', i18n("Property"));
    $tpl->set('d', 'BGCOLOR',  $cfg["color"]["table_header"]);
    $tpl->set('d', 'BORDERCOLOR', $cfg["color"]["table_border"]);
    $tpl->set('d', 'CATFIELD', i18n("Value"));
    $tpl->next();
   
    $tpl->set('d', 'CLASS', 'text_medium');
    $tpl->set('d', 'CATNAME', i18n("Name"));
    $tpl->set('d', 'BGCOLOR', $cfg["color"]["table_dark"]);
    $tpl->set('d', "BORDERCOLOR", $cfg["color"]["table_border"]);
    $tpl->set('d', 'CATFIELD', formGenerateField ("text", "name", $db->f("name"), 40, 255));
    $tpl->next();
  

    $tpl->set('d', 'CLASS', 'text_medium');
    $tpl->set('d', 'CATNAME', i18n("From"));
    $tpl->set('d', 'BGCOLOR', $cfg["color"]["table_light"]);
    $tpl->set('d', "BORDERCOLOR", $cfg["color"]["table_border"]);
    $tpl->set('d', 'CATFIELD', formGenerateField ("text", "newsfrom", $db->f("newsfrom"), 40, 255));
    $tpl->next();
    
    $tpl->set('d', 'CLASS', 'text_medium');
    $tpl->set('d', 'CATNAME', i18n("Subject"));
    $tpl->set('d', 'BGCOLOR', $cfg["color"]["table_dark"]);
    $tpl->set('d', "BORDERCOLOR", $cfg["color"]["table_border"]);
    $tpl->set('d', 'CATFIELD', formGenerateField ("textbox", "subject", $db->f("subject"), 80, 3));
    $tpl->next();
   
    if ($action != "news_createnewsletter")
    {
        $tpl->set('d', 'CLASS', 'text_medium');
        $tpl->set('d', 'CATNAME', i18n("Created"));
        $tpl->set('d', 'BGCOLOR', $cfg["color"]["table_light"]);
        $tpl->set('d', "BORDERCOLOR", $cfg["color"]["table_border"]);
        $tpl->set('d', 'CATFIELD', $db->f("newsdate"));
        $tpl->next();
    
        $tpl->set('d', 'CLASS', 'text_medium');
        $tpl->set('d', 'CATNAME', i18n("Author"));
        $tpl->set('d', 'BGCOLOR', $cfg["color"]["table_dark"]);
        $tpl->set('d', "BORDERCOLOR", $cfg["color"]["table_border"]);
        $tpl->set('d', 'CATFIELD', 
                                $userclass->getUsername($db->f("author")).
                                " (".
                                $userclass->getRealname($db->f("author")).
                                ")");

        $tpl->next();
    }
           
    $messageHelp = "<br><br><b>". i18n("Special Message Tags (will be replaced when sending)").":</b><br>".
                   "MAIL_NAME: ".i18n("Name of the recipient")."<br>".
                   "MAIL_DATE: ".i18n("Date of when the mail has been sent")."<br>".
                   "MAIL_TIME: ".i18n("Time of when the mail has been sent")."<br>".
                   "MAIL_NUMBER: ".i18n("Number of recipients")."<br>".
                   "MAIL_UNSUBSCRIBE: ".i18n("Link to unsubscribe")."<br>".
                   "MAIL_STOP: ".i18n("Link to pause the subscription")."<br>".
                   "MAIL_GOON: ".i18n("Link to resume the subscription")."<br>";

    $tpl->set('d', 'CLASS', 'text_medium');
    $tpl->set('d', 'CATNAME', i18n("Message"));
    $tpl->set('d', 'BGCOLOR', $cfg["color"]["table_light"]);
    $tpl->set('d', "BORDERCOLOR", $cfg["color"]["table_border"]);
    $tpl->set('d', 'CATFIELD', formGenerateField ("textbox", "message", $db->f("message"), 80, 20) . $messageHelp);
    $tpl->next();
    

    # Generate template
    $tpl->generate($cfg['path']['templates'] . $cfg['templates']['newsletter_edit']);
    
}
}
?>
<!-- HTML Area aufrufen -->
<script type="text/javascript">
    editor_generate('message');
</script>
4. include.newsletter_send.php in contenido/includes
(Änderungen: Einbindung von Klasse phpmailer- wird von Contenido z.B. für den BUG-Report genutzt. )

Code: Alles auswählen

<?
/******************************************
* File      :   include.newsletter_send.php
* Project   :   Contenido
* Descr     :   Newsletter Send Function
*
* Author    :   Timo A. Hummel
* Created   :   10.05.2003
* Modified  :   29.09.2004, LL Consult
*
* © four for business AG
*****************************************/
cInclude("classes","class.phpmailer.php");

if(!$perm->have_perm_area_action($area))
{
  $notification->displayNotification("error", i18n("Permission denied"));
} else {
  if (!isset($newsid))
  {
  } else {
    include_once ($cfgClient[$client]["path"]["frontend"]."config.php"); // HerrB: getting $newsletteridcatart...

    $sql = "SELECT * FROM ".$cfg["tab"]["news"]." WHERE idnews='$newsid'";
    $db->query($sql);
    $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 * FROM ".$cfg["tab"]["news_rcp"]." WHERE deactivated='0' AND confirmed='1' AND idlang='$lang' AND idclient='$client'";
    $db->query($sql);
    $i = 0;
    $number  = $db->num_rows();
    $message = str_replace("MAIL_NUMBER", "$number", $message);
    $message = str_replace("MAIL_DATE", "$dateday", $message);
    $message = str_replace("MAIL_TIME", "$time", $message);

    $sql = "SELECT idclient, frontendpath, htmlpath, errsite_cat, errsite_art FROM ".$cfg["tab"]["clients"] ." WHERE idclient='$client'";
    
    $db2 = new DB_Contenido;            
    $db2->query($sql);
    $db2->next_record();

    //$path = $db2->f("htmlpath"). "news.php?"; // HerrB: Updated, now including language and newsletter arcticle id
    $path = $db2->f("htmlpath"). "front_content.php?changelang=".$lang."&idcatart=".$newsletteridcatart."&";

    while ($db->next_record()) {
      $encoded_email = $db->f("email"); /* HerrB: getting urlencoded email from db */
      $to            = urldecode($encoded_email); /* HerrB: $db->f("email") -> urldecode($encoded_email) */
      $name          = urldecode($db->f("name")); /* HerrB: decoding urlencoded name */
      /* HerrB: If no name given, use e-mail as name */
      if (!($name)) {
        $name = $to;
      }

      $messageRaw = str_replace("MAIL_NAME", $name, $message);
      //HTML-Version
      $messageHTML = str_replace("MAIL_UNSUBSCRIBE", "<a href=\"".$path."unsubscribe=".md5($encoded_email)."\">Zusendung einstellen und Daten löschen</a>", $messageRaw); /* HerrB: $to -> md5($encoded_email) */
      $messageHTML = str_replace("MAIL_STOP", "<a href=\"".$path."stop=".md5($encoded_email)."\">Newsletter stoppen</a>", $messageHTML); /* HerrB: see above */
      $messageHTML = str_replace("MAIL_GOON", "<a href=\"".$path."goon=".md5($encoded_email)."\">Newsletterversand erneut aktivieren</a>", $messageHTML); /* HerrB: see above */                                                                                      
      //Text-Version
      $messageTxt = str_replace("MAIL_UNSUBSCRIBE", $path."unsubscribe=".md5($encoded_email), $messageRaw); /* HerrB: $to -> md5($encoded_email) */
      $messageTxt = str_replace("MAIL_STOP", $path."stop=".md5($encoded_email), $messageTxt); /* HerrB: see above */
      $messageTxt = str_replace("MAIL_GOON", $path."goon=".md5($encoded_email), $messageTxt); /* HerrB: see above */   
      $messageTxt = str_replace("<BR>","\n",$messageTxt); // einfacher Zeilenumbruch
      $messageTxt = str_replace("</P>","</P>\n",$messageTxt); // Absatzumbruch
            
      $mail = new phpmailer();
      $absender = explode(";",$from);
      
      
      if (count($absender)>1) {
      $mail->From     = $absender[0];
      $mail->FromName = $absender[1];
    }else{
      $mail->From     = $from;
      $mail->FromName = $from;
    }
      $mail->AddAddress($to, $name);
      /* set mail function to use */
      $mail->Mailer   = "mail"; //use php mail function

	/* generate subject & body */
    	$mail->Subject = $subject;
    	$mail->Body    =$messageHTML;
    	$mail->AltBody =strip_tags(html_entity_decode($messageTxt));
        
      if (!$mail->send())
      {
        $notsend .= $lngNews["mailcouldnotbesend1"].$to.$lngNews["mailcouldnotbesend2"]."<br>";
      } else {
        $i = $i + 1;
      }
    }
    $notification->displayNotification("info", $notsend.sprintf(i18n("Newsletter was sent to %s recipient(s)"), $i)."<br>");
  }
}


?>
5. im Modul Newsletter_blackbox den Bereich, beginnend mit if ($welcome_title != "")(versendet die Willkommen-Mail) durch folgenden Code ersetzen:

Code: Alles auswählen

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);
      
      //HTML-Version
      $messageHTML = str_replace("MAIL_UNSUBSCRIBE", "<a href=\"".$path."unsubscribe=".md5($encoded_email)."\">Zusendung einstellen und Daten löschen</a>", $message); /* HerrB: $to -> md5($encoded_email) */
      $messageHTML = str_replace("MAIL_STOP", "<a href=\"".$path."stop=".md5($encoded_email)."\">Newsletter stoppen</a>", $messageHTML); /* HerrB: see above */
      $messageHTML = str_replace("MAIL_GOON", "<a href=\"".$path."goon=".md5($encoded_email)."\">Newsletterversand erneut aktivieren</a>", $messageHTML); /* HerrB: see above */                                                                                      
      //Text-Version
      $messageTxt = str_replace("MAIL_UNSUBSCRIBE", $path."unsubscribe=".md5($encoded_email), $message); /* HerrB: $to -> md5($encoded_email) */
      $messageTxt = str_replace("MAIL_STOP", $path."stop=".md5($encoded_email), $messageTxt); /* HerrB: see above */
      $messageTxt = str_replace("MAIL_GOON", $path."goon=".md5($encoded_email), $messageTxt); /* HerrB: see above */
      $messageTxt = str_replace("<BR>","\n",$messageTxt); // einfacher Zeilenumbruch
      $messageTxt = str_replace("</P>","</P>\n",$messageTxt); // Absatzumbruch
                  
      $mail = new phpmailer();
      $absender = explode(";",$from);
      
      
      if (count($absender)>1) {
      $mail->From     = $absender[0];
      $mail->FromName = $absender[1];
    }else{
      $mail->From     = $from;
      $mail->FromName = $from;
    }
      $mail->AddAddress($to, $name);
      /* set mail function to use */
      $mail->Mailer   = "mail"; //use php mail function

	/* generate subject & body */
    	$mail->Subject = $subject;
    	$mail->Body    =$messageHTML;
    	$mail->AltBody =strip_tags(html_entity_decode($messageTxt));
    
        if ($mail->send()) { 
          echo $msg["htmlOKConfirmWelcome"]; 
        } 
      } 
    } 
  } else { 
    echo $msg["htmlErrConfirm"]; 
  }
TIPP: Für den Fall, dass der HTMLArea bereits verwendet wird, kann die editor.php kopiert und unter anderem Namen gespeichert werden (sauberer wäre es natürlich den Java-Script Part auzulagern und in php dann einzubinden, da sonst der JS-Code doppelt vorliegt). In der include.newsletter_edit.php muss dann die entsprechende zeile angepasst werden.

Nicht vergessen die alten dateien zu sichern.

Das Ergebnis sollte dann so aussehen:
Bild
Thomas Lucas
LL Consult
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB »

Schick... In der nächsten Version wird es zunächst nicht drin sein, aber danach frage ich Dich dann noch mal... :wink:

Gruß
HerrB
ps
Beiträge: 41
Registriert: So 3. Okt 2004, 20:23
Kontaktdaten:

Bilder in HTML Newsletter möglich?

Beitrag von ps »

@llconsult:

Ist es möglich, mit deiner modifizierten Variante des Newslettermodules (mit HTML-Fähigkeiten) Bilder im Newsletter einzubinden (d.h. ich lade ein Bild auf den Server (mittels HTML-Area) und binde es dann im Newsletter ein und verschicke es dann an die Empfänger und dort soll es dann auch angezeigt werden)?

Vielen Dank für deine Antwort.

Beste Grüsse


Pascal
llconsult
Beiträge: 12
Registriert: Mo 19. Apr 2004, 14:17
Wohnort: Köln
Kontaktdaten:

Bilder im HTML-Newsletter

Beitrag von llconsult »

Hallo ps,
Ist es möglich, mit deiner modifizierten Variante des Newslettermodules (mit HTML-Fähigkeiten) Bilder im Newsletter einzubinden (d.h. ich lade ein Bild auf den Server (mittels HTML-Area) und binde es dann im Newsletter ein und verschicke es dann an die Empfänger und dort soll es dann auch angezeigt werden)?
Grundsätzlich ja!

Allerdings musst du die Bilder mit der Dateiverwaltung hochladen. Diese kannst du dann mit "INSERT IMAGE" einfügen.

Bei einem Newsletter ist es wichtig, dass der absolute Pfad zum Bild angegeben wird. z.B.

Code: Alles auswählen

<IMG  src="http://www.ll-consult.de/upload/bilder/dom1.jpg" 
valign> 
Aktuell wird aber ein relativer Pfad erzeugt:

Code: Alles auswählen

<IMG  src="upload/bilder/dom1.jpg" 
valign> 
Du kannst nun entweder beim Einfügen oder über direkte HTML Eingabe die Daten ergänzen, oder den CODE in contenido\external\wysiwyg\htmlarea2\insert_image.php wie folgt ändern (php-Anteil in der datei , ab ca. Z174):

Code: Alles auswählen

<?
include('../../../includes/config.php');

// volständigen HTML-Pfad ermitteln ermitteln 08-04 LLC
$sql = "SELECT
                idclient,
                frontendpath,
                htmlpath,
                errsite_cat,
                errsite_art
            FROM
            ".$cfg["tab"]["clients"].
            " WHERE idclient = $client";

$db2 = new DB_Contenido;
$db2->query($sql);
$db2->next_record();
$htmlfrontend = $db2->f("htmlpath");

// Bilder aus dem upload-Verzeichnis lesen
$db = new DB_Contenido;
$db->next_record();

echo "<SELECT ID=\"selecttxtName\" SIZE=1 onchange=\"wechsel()\" style=\"left: 8.54em; top: 1.0647em; width: 30.5em;height: 2.1294em;\">";
echo "<option value=\"http://\" selected>bitte auswählen</option>";
$sql = "SELECT * FROM ".$cfg["tab"]["upl"]." WHERE idclient='$client' AND filetype IN ('jpg','gif','png') ORDER BY dirname,filename";
$db->query($sql);

while ($db->next_record()) {

// vollständigen Pfad angeben 08-04 LLC
echo "<option value=\"".$htmlfrontend."upload/".$db->f("dirname").$db->f("filename")."\">".$db->f("dirname").$db->f("filename")." [".$db->f("description")."]</option>";
}
echo "</SELECT>";

?>
Thomas Lucas
LL Consult
ps
Beiträge: 41
Registriert: So 3. Okt 2004, 20:23
Kontaktdaten:

Besten Dank

Beitrag von ps »

Hallo llconsult,


Danke für deine rasche Antwort. Ich werde mir deine Änderungen notieren.

Beste Grüsse,

Pascal
acquire
Beiträge: 194
Registriert: So 13. Jun 2004, 13:24
Kontaktdaten:

Beitrag von acquire »

Ich möchte mich hier nur mal beim Themenersteller bedanken. Als ich heute um Mitternacht meinen ersten Newsletter versenden wollte ging gar nichts. Dank diesem Thread und der sehr genauen Erklärung konnte ich ihn binnen 1 1/2 Stunden doch noch versenden. Vielen Dank.

@llconsult:
Toll gemacht. Deine Version werde ich demnächst auch mal ausprobieren.
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB »

Mal ein Update...

Wie bereits erwähnt, muss - damit auch Sonderzeichen im Namen stehen können - die Funktion is_alphanumeric() durch empty() ersetzt werden. Das war zwar im Modul auf Seite 1 bereits geändert, bisher nicht jedoch in der Datei include.newsletter_send.php.

Außerdem bestand das Problem, dass aus jeder Zeile beim Senden eine Zeile mit Leerzeile bzw. aus einer Leerzeile zwei wurden. Dies wurde ebenfalls in der Datei korrigiert (siehe Seite 1 dieses Threads).

Die Datei von Seite 1 wurde korrigiert. Sollte man jedoch die Korrekturen auf die Schnelle selbst vornehmen wollen:

Die Zeilen

Code: Alles auswählen

if (!is_alphanumeric($name)) {
        $name = $to;
      }
durch

Code: Alles auswählen

if (empty($name)) {
        $name = $to;
      }
ersetzen. Nach Zeile

Code: Alles auswählen

    $message = str_replace("MAIL_TIME", "$time", $message);
die Zeile

Code: Alles auswählen

    $message = str_replace("\r\n", "\n", $message); // HerrB: Eliminating double lines
ergänzen.

Kleiner Hinweis: Wenn ich es richtig verstanden habe, darf bei Windows-Servern die letzte Änderung nicht gemacht werden, da sie als Zeilenende-Zeichen \r\n statt \n erwarten... (d.h., auf Windows-Servern testen und ggf. angegebene Zeile wieder aus include.newsletter_send.php löschen).

Gruß
HerrB
Zuletzt geändert von HerrB am Fr 22. Okt 2004, 11:13, insgesamt 2-mal geändert.
acquire
Beiträge: 194
Registriert: So 13. Jun 2004, 13:24
Kontaktdaten:

Beitrag von acquire »

Wow, vielen Dank!
helibob
Beiträge: 3
Registriert: Fr 10. Sep 2004, 13:22
Kontaktdaten:

Newsletter-Modul von HerrB: zusätzliche Felder (Vorname...)?

Beitrag von helibob »

Das Modul ist klasse.

Was muss ich tun (außer die news_rcp-Tabelle um diese Spalten zu ergänzen), um die Felder zu ergänzen: ich möchte gern in separaten Feldern haben:

Vorname
Nachname
evtl. Adressfelder (für die Postaussendungen).

danke
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB »

Öhm, vieeel Zeit mitbringen.

Diese Version wird nicht mehr weiterentwickelt, der Code für V4.5 ff ist komplett anders (und noch in Arbeit). Wenn Du also damit liebäugelst, demnächst auf Contenido V4.5ff zu wechseln, solltest Du warten.

Was Du alles ändern musst, würde den Umfang dieses Threads (und meine zeitlichen Möglichkeiten) sprengen - aber ich gebe Dir gerne einen Einstieg:

- Der einfachste Teil ist die Erweiterung des Subscription-Moduls um die benötigten Felder.
- Im Blackbox-Modul müssen bei subscribe analog der e-mail-Adresse Zeilen für die anderen Felder mit urlencode ergänzt werden. Außerdem muss dort das INSERT-SQL-Statement um die entsprechenden Felder ergänzt werden.
- Der Code für die Anzeige der Daten im Backend steht in include.recipients_edit.php. Darin muss die Anzeige der zusätzlichen Felder, das urlencode und die Speicherung für die Felder ergänzt werden.
- In der include.recipients_menu.php brauchst Du nix ändern
- In der include.newsletter_send.php musst Du für die zusätzlichen Felder entsprechende Zeilen ergänzen:

Z.B.:
Unter $name = urldecode($db->f("name"));

Code: Alles auswählen

$firstname          = urldecode($db->f("firstname"));
...
("firstname" wäre der Name der Spalte aus der DB) und unter $message2 = str_replace("MAIL_NAME", "$name", $message);

Code: Alles auswählen

$message2 = str_replace("MAIL_FIRSTNAME", "$firstname", $message2);
...
ergänzen (man beachte: vorne und hinten $message2).

Wenn das mit dem Newsletter senden funktioniert, kannst Du diesen (erprobten Code) noch im Blackbox-Modul unter confirm einbauen, damit auch der Willkommens-Newsletter über die Angaben verfügt.

Beim editieren des Newsletters würdest Du "Deine" Codes ("MAIL_FIRSTNAME") nicht sehen, das könntest Du ggf. unter include.newsletter_edit.php ergänzen (ist aber nicht so wichtig).

Schon fertig...

Gruß
HerrB
doctorb
Beiträge: 4
Registriert: So 7. Nov 2004, 17:07
Kontaktdaten:

Alle Fehler weg?

Beitrag von doctorb »

Hi HerrB!

Hast Du jetzt mal eine Version, in der alle bugs beseitigt sind für Contenido Versions 4.4.4? Die Threads scheinen ja was älter zu sein...

Soweit funtioniert alles bei meiner Seite, jedoch kann ich keine Newsletter editieren und versenden...

Hab ich was überlesen? Jemand das Problem auch gehabt?

Gruß

doc
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB »

Die Version, die Du in diesem Thread findest (Seite 1) ist aktuell und fehlerbereinigt. In der Form wie angegeben funktioniert er mit V4.4.4.

Das Editieren der Newsletter wird durch die Code-Änderungen nicht beeinflusst. Bitte gib' daher noch ein paar Informationen:

- Alle Schritte von Seite 1 befolgt?
- Bei den runtergeladenen Dateien auch das .txt entfernt?
- Fehlermeldung?
- Contenido-Version?
- errorlog.txt?
- Datenbank-Spalten kontrolliert (siehe Seite 1)?

Gruß
HerrB
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB »

Mail von bachi:
Hallo HerrB.
ich verwende dein Newslettermodul zum Ein- und Austragen der Abonnenten.
Wenn ich nun einen Newsletter erzeuge über Contenido und möchte Ihn personifiziert mit MAIL_NAME versenden, dann passt die Zuordnung von Name und eMailadresse nicht. Er verwendet immer ein und den selben Namen für alle Empfänger. Ist das ein Bug in Contenido? Falls nicht, kannst du mir bei der Lösung dieses Problems behilflich sein?
Vielen Dank vorab und beste Grüße
Bachi
Ich habe es bei mir gerade getestet - er nimmt brav den jeweiligen Namen für jede Mail.

- Contenido-Version?
- Dateien ersetzt?
- Beispiel-Text für Newsletter?

Gruß
HerrB
doctorb
Beiträge: 4
Registriert: So 7. Nov 2004, 17:07
Kontaktdaten:

Beitrag von doctorb »

Hi HerrB!

Das ging aber schnell...

Habe alle Anweisungen befolgt, so wie sie hier gepostet waren. Meine Contenido Version ist 4.4.4.

Keine Errormeldungen, sql Datenbanken alle ok.

Wenn ich auf "Newsletter erstellen" klicke, dann lädt sich keine Seite.

Gruß

doc
Gesperrt