From 546385a12804908791f9dd4f2808d57e6836286f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jean-Philippe=20Gu=C3=A9rard?=
 <jean-philippe.guerard@tigreraye.org>
Date: Wed, 18 Jan 2012 00:24:16 +0100
Subject: [PATCH] Header encoding done with std functions

---
 fonctions.php | 33 ++++++++++++---------------------
 1 file changed, 12 insertions(+), 21 deletions(-)

diff --git a/fonctions.php b/fonctions.php
index 521ef698..b5b48198 100644
--- a/fonctions.php
+++ b/fonctions.php
@@ -163,33 +163,24 @@ function validateEmail($email)
 
 # Envoi un courrier avec un codage correct de To et Subject
 # Les en-têtes complémentaires ne sont pas gérés
-# Inspiré de http://geoland.org/2007/12/utf8-ready-php-mail-function/
 
 function sendEmail( $to, $subject, $body, $headers, $param)
 {
-  $to_list = explode( ',', html_entity_decode( $to, ENT_QUOTES, 'UTF-8' ) ) ;
-  $to = "" ;
-  $first = 1 ;
-
-  foreach ( $to_list as $one ) {
-    if ( $first == 0 ) $to .= ',' ;
-    if ( preg_match( "/</", $one ) ) {
-      $to_cut = explode( '<' ,$one ) ;
-      $to .= '=?UTF-8?B?' . base64_encode( $to_cut[ 0 ] ) . '?= <' . $to_cut[ 1 ] ;
-    } else {
-      $to .= $one ;
-    }
-    $first = 0 ;
-  } ;
 
-  $subject = '=?UTF-8?B?' . base64_encode( html_entity_decode( $subject, ENT_QUOTES, 'UTF-8' ) ) . '?=' ;
+  $subject = mb_encode_mimeheader( html_entity_decode( $subject, ENT_QUOTES, 'UTF-8' ), "UTF-8",,, 9 ) ;
+
+  $encoded_app = mb_encode_mimeheader( NOMAPPLICATION, "UTF-8",,, 6 ) ;
+  $size_encoded_app = strlen( $encoded_app ) % 76 ;
+  $size_admin_email = strlen( ADRESSEMAILADMIN ) ;
 
-  $encoded_app = '=?UTF-8?B?' . base64_encode( NOMAPPLICATION ) . '?=' ;
+  if ( $size_encoded_app + $size_admin_email + 9 > 74 ) $folding = "\n" 
+  else                                                  $folding = "" ;
+  $from = sprintf( "From: %s%s <%s>\n", $encoded_app, $folding, ADRESSEMAILADMIN ) ;
 
-  if ( $headers ) $headers .= "\r\n" ;
-  $headers .= sprintf( "From: %s <%s>\r\n", $encoded_app, ADRESSEMAILADMIN ) ;
-  $headers .= "MIME-Version: 1.0\r\n" ;
-  $headers .= "Content-Type: text/plain; charset=UTF-8\r\n" ;
+  if ( $headers ) $headers .= "\n" ;
+  $headers .= $from ;
+  $headers .= "MIME-Version: 1.0\n" ;
+  $headers .= "Content-Type: text/plain; charset=UTF-8\n" ;
   $headers .= "Content-Transfer-Encoding: 8bit" ;
 
   $body = html_entity_decode( $body, ENT_QUOTES, 'UTF-8' ) ;
-- 
GitLab