Wie Umstellung Charset in eMails von UTF-8 auf ISO-8859-1 ?
![](http://www.drupalcenter.de/files/noavatar_mini.gif)
am 02.11.2009 - 16:58 Uhr in
Soviel ich feststellen musste ist das Standard Charset für von Drupal versendete eMails UTF-8. Wie kann ich als Standard-Charset ISO 8859-1 festlegen?
Peter
- Anmelden oder Registrieren um Kommentare zu schreiben
hook_mail
am 02.11.2009 - 20:13 Uhr
Hallo.
Es ist möglich, dass ein Modul dafür existiert, jedoch kannst Du das auch schnell über ein MiniModul und hook_mail lösen.
In Deiner Implementierung von
hook_mail
musst Du dann das Character Set ändern.Ungefähr so:
<?php
function mymodule_mail($key, &$message, $params) {
if ($message['headers']['Content-Type']) {
$message['headers']['Content-Type'] = str_replace('UTF-8', 'ISO-8859-1', $message['headers']['Content-Type']);
}
else {
$message['headers']['Content-Type'] = 'text/plain; charset=ISO-8859-1; format=flowed; delsp=yes';
}
}
?>
Das sollte funktionieren.
hth,
Stefan
--
sei nett zu Deinem Themer
stBorchert
am 04.11.2009 - 11:30 Uhr
Hallo.
Es ist möglich, dass ein Modul dafür existiert, jedoch kannst Du das auch schnell über ein MiniModul und hook_mail lösen.
In Deiner Implementierung von
hook_mail
musst Du dann das Character Set ändern.Hallo Stefan,
vielen Dank zunächst mal für den Beispielcode.
Ich habe mir jetzt mal die Infos zu den Minimodulen angesehen. So richtig schlau werde ich aber nicht daraus.
Ich muss also zunächst eine .info Datei erstellen also z.B.
/home/mymm/hookm.info
mit einem Zeilen-Inhalt der Art:
"Hook für email"
und dann noch eine .module Datei also z.B.
/home/mymm/hookm.module
mit Deinem Code von oben.
Wie aktiviere ich denn nun aber den Code (sodass er für jede (oder auch nur bestimmte) outgoing email ausgeführt wird)?
Sollte php code eigentlich nicht immer in einer *.php Datei stehen?
Danke nochmal
Peter
Modul
am 04.11.2009 - 11:57 Uhr
Ich muss also zunächst eine .info Datei erstellen also z.B.
/home/mymm/hookm.info
Der Verzeichnisname und der Name der Datei (.info und .module) sollte übereinstimmen.
mit einem Zeilen-Inhalt der Art:
Naja, so wie es im Handbuch beschrieben steht (mit allen erforderlichen Zeilen).
und dann noch eine .module Datei also z.B. /home/mymm/hookm.module mit Deinem Code von oben.
Genau (nur mit angepasstem Namen).
Wie aktiviere ich denn nun aber den Code (sodass er für jede (oder auch nur bestimmte) outgoing email ausgeführt wird)?
Indem Du das Modul auf admin/build/modules aktivierst.
Sollte php code eigentlich nicht immer in einer *.php Datei stehen?
Nö. Da die Dateien im Endeffect "einfach nur" von der index.php inkludiert werden ist die Endung prinzipiell egal.
hth,
Stefan
--
sei nett zu Deinem Themer
[quote=stBorchertIndem Du
am 04.11.2009 - 16:37 Uhr
Indem Du das Modul auf admin/build/modules aktivierst.
Woher weiss denn Drupal überhaupt dass da irgendwo auf dem Server AUSSERHALB des Verzeichnisbaumes von Drupal eine relevante .info und eine .module Datei existieren?
Diese Minimodul muss doch erstmal Drupal bekannt gemacht werden bevor die user/der Admin es aktivieren kann.
Wie geht das?
Peter
Module
am 04.11.2009 - 19:46 Uhr
Woher weiss denn Drupal überhaupt dass da irgendwo auf dem Server AUSSERHALB des Verzeichnisbaumes von Drupal eine relevante .info und eine .module Datei existieren?
Wieso denn ausserhalb? Module gehören selbstverständlich in das Verzeichnis sites/all/modules.
hth,
Stefan
--
sei nett zu Deinem Themer
Die von Dir oben verlinkte
am 04.11.2009 - 20:51 Uhr
Die von Dir oben verlinkte Doc Seite
http://drupal.org/node/246039
sagt: "...for example under sites/all/modules"
Das erweckt den Eindruck als könnten die Dateien beliebig platziert werden
Peter
Module
am 04.11.2009 - 22:34 Uhr
"for example" heisst in diesem Fall, dass Module in Multisite-Umgebungen nicht notwendigerweise in sites/all liegen müssen, sondern durchaus auch in sites/SiteUrl.
hth,
Stefan
--
sei nett zu Deinem Themer
Und der Body?
am 04.11.2009 - 22:46 Uhr
Ich habe vor über zwei Jahren für Drupal 5 mal etwas ähnliches auf drupal.org gepostet:
http://drupal.org/node/125270#comment-223272
Was mich etwas wundert ist, dass es jetzt bei Drupal 6 reichen soll, die Angabe über das Encoding im Mailheader zu ändern. Muss man nicht mehr den Body selbst konvertieren?
Hier nochmal mein Code für Drupal 5:
<?php
function YOUR_MODULE_mail_alter(&$mailkey, &$to, &$subject, &$body, &$from, &$headers) {
// Convert Mail encoding to iso-8859-1
$headers["Content-Type"] = str_replace("utf-8", "iso-8859-1", $headers["Content-Type"]);
$subject = utf8_decode($subject);
$body = utf8_decode($body);
}
?>
Markus Kalkbrenner
Cocomore AG
drupal.cocomore.com