Newsletter Handler Module V3.0.1 + mehrsprachige e-mails
Nur mal als Memo:
http://en.wikipedia.org/wiki/MIME (besser!)
http://www.ietf.org/rfc/rfc2047.txt
http://www.phpguru.org/downloads/html.mime.mail/
http://de3.php.net/manual/de/function.i ... decode.php
Gruß
HerrB
http://en.wikipedia.org/wiki/MIME (besser!)
http://www.ietf.org/rfc/rfc2047.txt
http://www.phpguru.org/downloads/html.mime.mail/
http://de3.php.net/manual/de/function.i ... decode.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
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
-
- Beiträge: 81
- Registriert: Do 8. Sep 2005, 13:18
- Wohnort: Sarajevo
- Kontaktdaten:
Ich habe jetzt etwas rumprobiert und glaub eine nicht schlechte Lösung gefunden:
Im Newsletter-Handler-Modul habe ich jeweils vor der Zeile
folgendes eingefügt:
Die aufwändige Aufsplittung ist nötig, weil der fertige MIME-kodierte String zwischen =? und ?= (inkl.) nur 75 Zeichen lang sein darf. Wenn alle Zeichen kyrillisch sind, geht das bei 15 Zeichen grad durch. Und man darf mehrere solche Strings hintereinander haben.
Das gleiche in class.newsletter.php gemacht.
Resultat:
Alle Mails, die vom Newsletter-Handler-Modul verschickt werden, kommen nun perfekt an. Jedenfalls in Thunderbird. Sehr gut.
Beim Verschicken eines Newsletters allerdings (ich glaube, das kommt dann von class.newsletter.php) wird $encoding[$lang] nicht ausgeführt, sondern liefert nur einen Leerstring.
Woran kann das liegen? Ich kann mich erinnern, dass es gestern mal schön korrekt den Zeichensatz zurückgeliefert hat.
Im Newsletter-Handler-Modul habe ich jeweils vor der Zeile
Code: Alles auswählen
$mail->Subject = $subject;
Code: Alles auswählen
$btext = $subject;
$subject = '';
$btext = chunk_split($btext, 15, '|');
$betreff = explode('|',$btext);
foreach ($betreff as $u)
{ $subject .= '=?'.$encoding[$lang].'?Q?'.imap_8bit($u).'?= '; }
Das gleiche in class.newsletter.php gemacht.
Resultat:
Alle Mails, die vom Newsletter-Handler-Modul verschickt werden, kommen nun perfekt an. Jedenfalls in Thunderbird. Sehr gut.
Beim Verschicken eines Newsletters allerdings (ich glaube, das kommt dann von class.newsletter.php) wird $encoding[$lang] nicht ausgeführt, sondern liefert nur einen Leerstring.
Woran kann das liegen? Ich kann mich erinnern, dass es gestern mal schön korrekt den Zeichensatz zurückgeliefert hat.
Super! Da hätte ich mich warscheinlich totgefummelt.
Ist $encoding und $lang als global in der jeweiligen Funktion definiert? Was kommt bei echo $encoding[$lang]; (in der Funktion der Klasse) raus?
Ich muss gestehen, dass ich gar nicht weiss, wo die $encoding-Variable definiert wird, vielleicht muss man da nochmal Hand anlegen.
Gruß
HerrB
Ist $encoding und $lang als global in der jeweiligen Funktion definiert? Was kommt bei echo $encoding[$lang]; (in der Funktion der Klasse) raus?
Ich muss gestehen, dass ich gar nicht weiss, wo die $encoding-Variable definiert wird, vielleicht muss man da nochmal Hand anlegen.
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
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
-
- Beiträge: 81
- Registriert: Do 8. Sep 2005, 13:18
- Wohnort: Sarajevo
- Kontaktdaten:
Ja, dann muss man nochmal nachforschen, woher $encoding eigentlich stammt. Ggf. kann man es als (optionalen) Parameter der send-Funktion noch hinten anfügen - aber auch dafür müsste es im Backend zur Verfügung stehen und damit eigentlich auch der Klasse als globale Variable, mmmmmh.
Gruß
HerrB
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
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
-
- Beiträge: 81
- Registriert: Do 8. Sep 2005, 13:18
- Wohnort: Sarajevo
- Kontaktdaten:
Mmmmh, heißt, ich denke (und würde heute abend Suchen). Du kannst einfach mal die Source-Dateien durchsuchen, wo $encoding als Variable erzeugt und gefüllt wird.
Wenn unter Windows XP und Windows XP findet gar kein Vorkommen bei Suche nach .php (Datei) und encoding (enthält), sage Bescheid, dann gibt es einen Tipp, wie man das korrigieren kann...
Gruß
HerrB
Wenn unter Windows XP und Windows XP findet gar kein Vorkommen bei Suche nach .php (Datei) und encoding (enthält), sage Bescheid, dann gibt es einen Tipp, wie man das korrigieren kann...
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
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
-
- Beiträge: 81
- Registriert: Do 8. Sep 2005, 13:18
- Wohnort: Sarajevo
- Kontaktdaten:
-
- Beiträge: 5478
- Registriert: Di 2. Mär 2004, 21:11
- Wohnort: Halchter, wo sonst? ;-)
- Kontaktdaten:
Das, womit dir HerrB helfen wollte (wie man unter Windows php-Dateien durchsuchen kann), findest du hier:
http://www.contenido.org/forum/viewtopic.php?t=7790
http://www.contenido.org/forum/viewtopic.php?t=7790
Bitte keine unaufgeforderten Privatnachrichten mit Hilfegesuchen schicken. WENN ich helfen kann, dann mache ich das im Forum, da ich auch alle Postings lese. PN werden nicht beantwortet!
-
- Beiträge: 81
- Registriert: Do 8. Sep 2005, 13:18
- Wohnort: Sarajevo
- Kontaktdaten:
so. ich glaub, ich hab den hasen: Die Variable wird frisch fröhlich in der front_content.php generiert. Der Newsletter-Handler läuft über das Front-End, weshalb dort die Variable $encoding[$lang] funktioniert. Das Versenden des Newsletters hingegen hat mit dem Front-End nichts zu tun, weshalb die Variable auch nicht vorhanden ist.
Könnt's das sein?
Könnt's das sein?
Yep. Probiere bitte mal echo $aLanguageEncodings[$lang];
Gruß
HerrB
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
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
-
- Beiträge: 81
- Registriert: Do 8. Sep 2005, 13:18
- Wohnort: Sarajevo
- Kontaktdaten:
Ah, jetzt sehe ich, das gilt nur für den Header. Nein, dann müsste man die Funktion nachbauen. Eigentlich gehört sie in eine Tool-Datei, sowas wie functions.general.php, aber hier würde ich sie in die include.newsletter_send.php integrieren und das Encoding als Parameter der Send-Methode mitgeben (d.h. auch: Parameter für die Funktion in class.newsletter.php ergänzen).
Gruß
HerrB
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
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
-
- Beiträge: 81
- Registriert: Do 8. Sep 2005, 13:18
- Wohnort: Sarajevo
- Kontaktdaten:
-
- Beiträge: 81
- Registriert: Do 8. Sep 2005, 13:18
- Wohnort: Sarajevo
- Kontaktdaten:
Ich habs.
1. Schritt:
In der include.newsletter_send.php vor der function fncWriteClientLog($msg) folgenden Code einfügen:
2. Schritt:
In der gleichen Datei in der function fncWriteClientLog($msg) die Zeile
wie folgt ergänzen:
3. Schritt:
In der Datei class.newsletter.php folgende Zeile
so ergänzen:
4. Schritt:
In der gleichen Datei nach der Zeile
folgende Zeile einfügen:
5. Schritt:
In der gleichen Datei etwas weiter oben nach der Zeile
folgenden Code einfügen:
Ich glaube, das war alles. wow. Hätte ich nicht gedacht, dass ich das hinkriege.
@HerrB: Danke für die Hilfe immer.
@alle: Kommentare natürlich erwünscht.
1. Schritt:
In der include.newsletter_send.php vor der function fncWriteClientLog($msg) folgenden Code einfügen:
Code: Alles auswählen
/**
* Looks up the encoding-charset of the current language
*/
function encodingcharset() {
global $cfg, $lang;
$sql = "SELECT idlang, encoding
FROM ".$cfg["tab"]["lang"]."
WHERE idlang = $lang";
$db2 = new DB_Contenido;
$db2->query($sql);
$db2->next_record();
return $db2->f("encoding");
}
In der gleichen Datei in der function fncWriteClientLog($msg) die Zeile
Code: Alles auswählen
$aResult = $oNewsletter->send($iIDCatArt, $sSendOption, $aSelGroups, $iDispatchCount, $_REQUEST["chunk"]);
Code: Alles auswählen
$aResult = $oNewsletter->send($iIDCatArt, $sSendOption, $aSelGroups, $iDispatchCount, $_REQUEST["chunk"], encodingcharset());
In der Datei class.newsletter.php folgende Zeile
Code: Alles auswählen
function send($idcatart, $destination = "other", $to = "", $chunksize = 0, $chunk = 0)
Code: Alles auswählen
function send($idcatart, $destination = "other", $to = "", $chunksize = 0, $chunk = 0, $encoding = "iso-8859-1")
In der gleichen Datei nach der Zeile
Code: Alles auswählen
$mail = new phpmailer();
Code: Alles auswählen
$mail->CharSet = $encoding;
In der gleichen Datei etwas weiter oben nach der Zeile
Code: Alles auswählen
$subject = $this->get("subject");
Code: Alles auswählen
if (substr($subject,0,2) <> '=?') // Nur das erste Mal encoden
{
$betreff = chunk_split($subject, 15, '|');
$betreff_array = explode('|',$betreff);
$subject = '';
foreach ($betreff_array as $u)
{ $subject .= '=?'.$encoding.'?Q?'.imap_8bit($u).'?= '; }
}
Ich glaube, das war alles. wow. Hätte ich nicht gedacht, dass ich das hinkriege.
@HerrB: Danke für die Hilfe immer.
@alle: Kommentare natürlich erwünscht.
Zuletzt geändert von markusheinzer am Sa 22. Apr 2006, 06:30, insgesamt 1-mal geändert.