L'alyblog

Aller au contenu | Aller au menu | Aller à la recherche

Mot-clé - encodage

Fil des billets - Fil des commentaires

jeudi, octobre 29 2009

Envoi d'email HTML avec CodeIgniter

J'ai rencontré pas mal de problème lors de l'envoi d'emails HTML avec CodeIgniter. Le problème est que Code Igniter rend compatible les emails avec la norme RFC 2045.

mais cette norme ne semble pas bien interpretée par un grand nombre de client de messagerie.

J'ai donc décidé de revenir à des mails plus basique.

Pour cela, il faudra modifier la class Email de base de Code Igniter, ou mieux, surcharger la classe par une classe Perso.

Dans la fonction _build_message(), il suffit de commenter (ou supprimer) les lignes

$hdr .= "Content-Transfer-Encoding: quoted-printable";

Cette ligne apparait plusieurs fois, selon que l'email soit en html, ou html-attach (si des pièces jointes sont attachées). Le fait de commenter cette ligne signifie que l'email n'est plus en encodage quoted-printable. Ensuite, il faudra commenter les lignes :

$this->_body = $this->_prep_quoted_printable($this->_body);

En faisant cela, on ne passe plus par la fonction qui encode le contenu du message en quoted-printable

Maintenant, les mails passent correctement !

mercredi, décembre 27 2006

Encodage dans mysql

A la suite d'une erreur de type :

Illegal mix of collations (latin1_general_ci,IMPLICIT) and

(cp1251_general_ci,COERCIBLE) for operation 'like'

je me suis demandé à quel niveau l'encodage cp1251_general_ci intervenait puisque mon éditeur de texte encode en utf-8, ainsi que l'encodage spécifié dans ma page xhtml et l'interclassement de ma base de données.

Avec la commande :

SHOW VARIABLES LIKE 'char%'

Voici ce que MySql retourne :

character_set_server  	cp1251
character_set_system 	utf8
character_set_database 	latin1
character_set_client 	utf8
character_set_connection 	utf8
character-sets-dir 	/usr/local/share/mysql/charsets/
character_set_results 	utf8

Sur FreeBsd, MySql dispose de plusieurs configurations par défaut, selon le type d'utilisation et la puissance du serveur. Les fichiers de configuration par défaut se trouve ici :

/usr/local/share/mysql/my-huge.cnf
/usr/local/share/mysql/my-large.cnf
/usr/local/share/mysql/my-medium.cnf
/usr/local/share/mysql/my-small.cnf

Pour personnaliser la configuration de MySql, il suffit de déplacer le fichier par défaut sélectionné dans :

/etc/my.cnf

Pour modifier l'encodage, j'ai ajouté ces lignes :

#Set the default character set.
default-character-set=latin1
#Set the default collation.
default-collation=latin1_swedish_ci

dans la section [client] et [mysqld].

Les encodages et interclassements disponibles sont dans le répertoire définit par la variable character-sets-dir vue précédemment.

jeudi, septembre 7 2006

Convertir un script de format DOS/Windows au format Unix

Certains scripts peuvent poser problème sous linux ou mac si le format de fichier est de type DOS/Windows.

voici une astuce simple pour corriger cela :

  • Ouvrir le script dans l'application vim
  • Saisir dans vim :set fileformat=unix (ne pas oublier les :)
  • Valider en cliquant sur la touche entrer
  • Enregistrer et quitter l'application vim en tapant :wq (ne pas oublier les :)
  • Valider en cliquant sur la touche entrer

Le script est maintenant sauvegardé comme un fichier Unix.